tags = tr.xpath('//*[@class="fleft"]/text() ') ^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'xpath'
时间: 2023-11-13 14:25:38 浏览: 37
这个错误通常表示你正在尝试对一个空对象进行操作。在这个例子中,'NoneType'指的是一个空对象,它没有属性'xpath'。
这通常是由于在尝试对一个不存在的元素或属性进行操作时引起的。你需要检查代码中的变量是否正确初始化,或者在访问属性或方法之前确保对象存在。
你可以尝试使用条件语句来检查变量是否存在,例如:
```
if tr is not None:
tags = tr.xpath('//*[@class="fleft"]/text()')
```
这将确保只有在tr存在时才执行xpath方法。
相关问题
import requests from lxml import etree import csv headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } f = open('4399排行.csv', mode='w', encoding='utf-8-sig', newline='') csv_writer = csv.DictWriter(f, fieldnames=[ '游戏名称','日期','类型']) csv_writer.writeheader() for i in range(1,11): if i == 1: url = 'https://www.4399.com/flash/game100.htm' html = requests.get(url,headers=headers).content doc = etree.HTML(html) name = doc.xpath('//*[@id="list"]/li/div/a/text()') kind = doc.xpath('//*[@id="list"]/li/span/a/text()') date = doc.xpath('//*[@id="list"]/li/span/text()') data_list = [] for i in range(len(name)): dit = {} dit['游戏名称'] = name[i] dit['类型'] = kind[i] dit['日期'] = date[i] data_list.append(dit) csv_writer.writerow(dit) else: url = 'https://www.4399.com/flash/game100_{}.htm'.format(str(i)) html = requests.get(url,headers=headers).content doc = etree.HTML(html) name = doc.xpath('//*[@id="list"]/li/div/a/text()') kind = doc.xpath('//*[@id="list"]/li/span/a/text()') date = doc.xpath('//*[@id="list"]/li/span/text()') data_list = [] for i in range(len(name)): dit = {} dit['游戏名称'] = name[i] dit['类型'] = kind[i] dit['日期'] = date[i] data_list.append(dit) csv_writer.writerow(dit) print(data_list)怎么改是爬取的时间只保存到月份
可以在爬取日期的代码处,对日期进行处理,只保留到月份。可以使用Python的datetime模块来实现。具体代码如下:
```python
import requests
from lxml import etree
import csv
from datetime import datetime
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
f = open('4399排行.csv', mode='w', encoding='utf-8-sig', newline='')
csv_writer = csv.DictWriter(f, fieldnames=[ '游戏名称','日期','类型'])
csv_writer.writeheader()
for i in range(1,11):
if i == 1:
url = 'https://www.4399.com/flash/game100.htm'
html = requests.get(url,headers=headers).content
doc = etree.HTML(html)
name = doc.xpath('//*[@id="list"]/li/div/a/text()')
kind = doc.xpath('//*[@id="list"]/li/span/a/text()')
date = doc.xpath('//*[@id="list"]/li/span/text()')
data_list = []
for i in range(len(name)):
dit = {}
dit['游戏名称'] = name[i]
dit['类型'] = kind[i]
# 对日期进行格式化,只保留到月份
dit['日期'] = datetime.strptime(date[i], '%Y-%m-%d').strftime('%Y-%m')
data_list.append(dit)
csv_writer.writerow(dit)
else:
url = 'https://www.4399.com/flash/game100_{}.htm'.format(str(i))
html = requests.get(url,headers=headers).content
doc = etree.HTML(html)
name = doc.xpath('//*[@id="list"]/li/div/a/text()')
kind = doc.xpath('//*[@id="list"]/li/span/a/text()')
date = doc.xpath('//*[@id="list"]/li/span/text()')
data_list = []
for i in range(len(name)):
dit = {}
dit['游戏名称'] = name[i]
dit['类型'] = kind[i]
# 对日期进行格式化,只保留到月份
dit['日期'] = datetime.strptime(date[i], '%Y-%m-%d').strftime('%Y-%m')
data_list.append(dit)
csv_writer.writerow(dit)
print(data_list)
```
在上述代码中,我们使用了datetime模块中的strftime方法来将日期格式化为只保留到月份的格式。具体来说,我们使用了`'%Y-%m-%d'`格式来解析原始日期,然后使用`'%Y-%m'`格式来格式化日期。这样就可以实现只保存到月份的效果。
import requests from lxml import etree import pandas as pd headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' } url = f'http://b2b.huangye88.com/shenzhen/jixie/pn2/' res = requests.get(url, headers=headers) res.encoding = 'utf-8' html = etree.HTML(res.text) for et in html.xpath('//*[@id="jubao"]/dl'): name = et.xpath('./dt/h4/a/@title') print(name[0]) hrefs = [] href = et.xpath("./dt/h4/a/@href")[0] hrefs.append(href) content = [] # 保存内容 for u in hrefs: msg = requests.get(u).text xmsg = etree.HTML(msg) if len(name) != 0: tel = xmsg.xpath('/ul[@class ="1-txt none"/li') if len(tel) != 0: tel_name = tel.xpath('.//label/text()') if len(tel_name) != 0: tel_iphone=tel.xpath('.//span[@class="secret"]/text()') if len(tel_iphone) != 0: tel = tel[0] print(name[0], tel_name,tel_iphone, '\n')
根据您提供的代码,我注意到您在进行xpath解析时出现了一些错误。以下是我发现的问题和修复建议:
1. 在`tel = xmsg.xpath('/ul[@class ="1-txt none"/li')`这行代码中,XPath表达式的括号未正确闭合。修改为`tel = xmsg.xpath('//ul[@class="1-txt none"]/li')`。
2. 在`tel = tel[0]`这行代码中,您将`tel`变量重新赋值为列表中的第一个元素。但是,在上一行代码中,您已经将`tel`变量用于判断是否存在电话信息。因此,在这里不需要重新赋值。
下面是修复后的代码片段:
```python
import requests
from lxml import etree
import pandas as pd
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
url = f'http://b2b.huangye88.com/shenzhen/jixie/pn2/'
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
html = etree.HTML(res.text)
for et in html.xpath('//*[@id="jubao"]/dl'):
name = et.xpath('./dt/h4/a/@title')
print(name[0])
hrefs = []
href = et.xpath("./dt/h4/a/@href")[0]
hrefs.append(href)
content = [] # 保存内容
for u in hrefs:
msg = requests.get(u).text
xmsg = etree.HTML(msg)
if len(name) != 0:
tel = xmsg.xpath('//ul[@class="1-txt none"]/li')
if len(tel) != 0:
tel_name = tel.xpath('.//label/text()')
if len(tel_name) != 0:
tel_iphone=tel.xpath('.//span[@class="secret"]/text()')
if len(tel_iphone) != 0:
print(name[0], tel_name, tel_iphone, '\n')
```
请注意,这只是对您提供的代码片段进行了修复,并不能保证整个代码的正确性。如果您还遇到其他问题,请提供更多的信息,我将尽力帮助您解决。
相关推荐
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)