import requests
import pandas as pd
from lxml import etree
csv_list = []
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
def parse(s):
return str(s)[5:]
def parse_html(htmll):
html = etree.HTML(htmll)
book_name = html.xpath('/html/body/div[3]/div[3]/div[2]/ul//li/div[3]/a/text()')
print(book_name)
book_url = html.xpath('/html/body/div[3]/div[3]/div[2]/ul//li/div[3]/a/@href')
for i in range(len(book_name)):
route_html = etree.HTML(requests.get(book_url[i], headers=headers).text)
name = route_html.xpath('//*[@id="product_info"]/div[1]/h1/text()')
author = route_html.xpath('//*[@id="author"]/a[1]/text()')
time = route_html.xpath('//*[@id="product_info"]/div[2]/span[3]/text()')
price = route_html.xpath('//*[@id="dd-price"]/text()')
csv_list.append([str(i+1),
book_name[i],
name[0],
author[0],
parse(time),
float(price[0].replace('¥', ''))])
for i in range(1, 26):
url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent30-0-0-1-{i}'
response = requests.get(url=url, headers=headers, timeout=10)
html_content = response.content.decode('gbk')
parse_html(html_content)
print(f'第{i}页爬取完毕')
df = pd.DataFrame(csv_list, columns=['名称', '名字', '作者', '时间', '价格'])
df.to_csv('小说月票榜.csv', index=False)
为什么爬不到数据啊?
救命
import requests
import pandas as pd
from lxml import etree
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'
}
for i in range(1, 2):
url = f'http://bang.dangdang.com/books/bestsellers/01.00.00.00.00.00-recent30-0-0-1-{i}'
response = requests.get(url=url, headers=headers, timeout=10)
# html_content = response.content.decode('gbk')
html = etree.HTML(response.text)
book_name = html.xpath('//*[@class="name"]//text()')
for i in book_name:
print(i)
xpath 路径不对 , 你仔细修改下
您的代码中,xpath表达式可能不够准确,可能导致无法正确解析HTML内容。建议您检查一下HTML页面的结构和标签名称,尝试完善xpath表达式的准确性。
我运行你的代码没有任何报错也可以出现结果:
可能是因为在Xpath中的路径写得不够精确,或者是网站反爬虫机制限制了您的访问。
Xpath路径是否准确,尤其是一些定位元素的路径,如 book_name 和 book_url。
确认目标网站是否有反爬虫机制,并且是否对访问进行了限制或重定向。
尝试使用其他的页面解析库,如bs4或者pyquery,可能会更适合某些情况。
确认代码所依赖的第三方库是否已经正确安装。