简单爬虫没报错但爬不到问题


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)

img

xpath 路径不对 , 你仔细修改下

您的代码中,xpath表达式可能不够准确,可能导致无法正确解析HTML内容。建议您检查一下HTML页面的结构和标签名称,尝试完善xpath表达式的准确性。

我运行你的代码没有任何报错也可以出现结果:

img


这个脚本没有明显的语法错误或逻辑问题,可以正常运行。不过值得注意的是,该脚本只循环了一次(range(1, 2)),因此只获取了该网页上的一页数据。如需获取更多页的数据,请在 range 中设置更大的值。此外,需要注意网页的编码格式,在这里使用的是 requests 和 lxml 库,可以正常解析 utf-8 和 gbk 格式的数据。如果在获取数据时遇到编码问题,可以通过调整编码方式进行解决。

可能是因为在Xpath中的路径写得不够精确,或者是网站反爬虫机制限制了您的访问。

Xpath路径是否准确,尤其是一些定位元素的路径,如 book_name 和 book_url。

确认目标网站是否有反爬虫机制,并且是否对访问进行了限制或重定向。

尝试使用其他的页面解析库,如bs4或者pyquery,可能会更适合某些情况。

确认代码所依赖的第三方库是否已经正确安装。