请问各位为什么我这个爬虫爬取评论数得到的内容是空白的呢?还有商家名称如果我爬取4页以上的内容也会报错。代码如下
import requests
from bs4 import BeautifulSoup
import xlwt
def get_html(url):
# 模拟浏览器访问
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36 Edg/107.0.1418.56'}
print("--> 正在获取网站信息")
response = requests.get(url, headers=headers) # 请求访问网站
if response.status_code == 200:
html = response.text # 获取网页源码
return html # 返回网页源码
else:
print("获取网站信息失败!")
if __name__ == '__main__':
# 创建workbook,就是创建一个Excel文档
write_work = xlwt.Workbook(encoding='ascii')
# 添加一张单
write_sheet = write_work.add_sheet("sheet1")
# 创建表头
write_sheet.write(0, 0, label='商品编号') # 第1行 第1列 写入内容'商品编号'
write_sheet.write(0, 1, label='商品名称') # 第1行 第2列 写入内容'商品名称'
write_sheet.write(0, 2, label='价格') # 第1行 第4列 写入内容'价格'
write_sheet.write(0, 3, label='商家') # 第1行 第5列 写入内容'商家'
write_sheet.write(0, 4, label='商品评论数') # 第1行 第6列 写入内容'商品详情地址'
# 记录当前行数
_current_row = 0
i=0
k=0
j=0
for k in range(0,3):
i = 3+k*2
j = 56+k*60
# 搜索地址
search_url= 'https://search.jd.com/Search?keyword=黑茶&qrst=1&wq=黑茶&stock=1&pvid=5aa84d8c4508417cb97bdc6701a5a515&page=%d&s=%d&click=0'%(i,j)
html = get_html(search_url)
# 初始化BeautifulSoup库,并设置解析器
soup = BeautifulSoup(html, 'lxml')
# 商品列表
goods_list = soup.find_all('li', class_='gl-item')
# 打印goods_list到控制台
for li in goods_list: # 遍历父节点
# 由于我们第一行已经写入了表头。所以这里0+1,就是从第1行开始,后面每次循环+1
_current_row += 1
if _current_row == 29:
break
# 商品编号
no = li['data-sku']
# 商品名称
name = li.find(class_='p-name p-name-type-2').find('em').get_text()
# 价格
price = li.find(class_='p-price').find('i').get_text()
# 商家
shop = li.find(class_='p-shop').find('a').get_text()
# 商品评论数
detail_addr = li.find(class_='p-commit').find('a').get_text()
# 写入Excel
write_sheet.write(_current_row, 0, label=no)
write_sheet.write(_current_row, 1, label=name)
write_sheet.write(_current_row, 2, label=price)
write_sheet.write(_current_row, 3, label=shop)
write_sheet.write(_current_row, 4, label=detail_addr)
# 保存文件,使用的是相对目录(也可以使用绝对路径),会保存在当前文件的同目录下。文件名为读取多个商品页面1.xls,必须是.xls后缀
write_work.save("./读取多个商品页面1.xls")
报错内容发一下,你八成被反爬虫了
先打印一下html看有没有内容,没有的话修改一下爬虫设置