小源1108 2023-02-16 10:59 采纳率: 66.7%
浏览 45
已结题

关于#python#的问题:我想知道这段python爬虫代码有什么问题,为什么爬取不到我想要的信息呀代码如下:

我想知道这段爬虫代码有什么问题,为什么爬取不到我想要的信息呀
代码如下:

from lxml import etree
import requests
import csv
import time

fp = open('D:/Users/jack/Desktop/bilibili.csv', 'wt', newline='', encoding='utf-8-sig')
writer = csv.writer(fp)

writer.writerow(('up主', '视频名字', '视频链接', '时长', '观看人数', '上传时间'))

page = range(2, 34)
o = range(30, 510, 30)

urls = ['https://search.bilibili.com/video?keyword=python&from_source=webtop_search&spm_id_from=333.1007&search_source=3&page={}&o={}'.format(number, str(i)) for number, i in zip(page, o)]
headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
                  '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'
}

for url in urls:
    print(url)
    time.sleep(2)
    html = requests.get(url, headers=headers)
    selector = etree.HTML(html.text)
    infos = selector.xpath('//div[@class="bili-video-card"]')
# infos = selector.xpath('//div[@id="i_cecream"]')
    for info in infos:
        up_name = info.xpath('div/div/p/a/span[1]')
        print(up_name)
        name = info.xpath('div/div/a/h3')
        print(name)
        url = info.xpath('div/div/a/@href')
        print(url)
        data = info.xpath('a/div/div[2]/div/span')
        print(data)
        see = info.xpath('a/div/div[2]/div/div/span[1]/span/text()')
        print(see)
        on_time = info.xpath('div/div/p/a/span[2]/text()')
        print(on_time)
        writer.writerow((up_name, name, url, data, see, on_time))
fp.close()

起初我的解决办法是去掉infos这个变量,但是不行,我还将infos变量改变了一下还是没用,但是我在网页试的时候是可以的

img

会的宝宝可以帮我看一下吗?万分感谢

  • 写回答

3条回答 默认 最新

  • Dick_不周 2023-02-16 14:57
    关注

    。。我试了一下,确实在构造infos时,XPATH没问题,但是infos没有值

    img

    这里看到protected Attributes 了吗,说明哔哩哔哩还是有反爬机制的。
    百度一下~
    https://ask.csdn.net/questions/7479422
    这篇文章就解释了需要带请求头才能获取到具体的信息。
    如果有用请采纳,十分感谢

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月25日
  • 已采纳回答 2月17日
  • 修改了问题 2月16日
  • 创建了问题 2月16日

悬赏问题

  • ¥15 在若依框架下实现人脸识别
  • ¥15 网络科学导论,网络控制
  • ¥100 安卓tv程序连接SQLSERVER2008问题
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同