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

关于#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 halcon DrawRegion 提示错误
  • ¥15 FastAPI Uvicorn启动显示404
  • ¥15 centos7.9脚本,怎么排除特定的访问记录
  • ¥15 关于#Django#的问题:我的静态文件呢?
  • ¥15 关于CPLEX的问题,请专家解答
  • ¥15 cocos的点击事件 怎么穿透到 原生fragment上。
  • ¥20 基于相关估计的TDOA算法中的加权最小二乘拟合法matlab仿真
  • ¥20 基于相关估计的TDOA算法中的自适应加权广义互相关法。
  • ¥15 abaqus CAE 2024软件启动问题
  • ¥20 基于相关估计的TDOA算法中的局部互相关函数滤波matlab仿真