请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

爬取的html错误

老师,我这里碰到一点问题,在requests.get()方法中,get到的是F12的Sources而不是Elemeuts ,并且每一个论坛的Sources还不一样。

以下是我的代码:

def parse_list(url):
    res_text=requests.get(url).text
    sel=Selector(text=res_text)
    all_trs=sel.xpath('//div[@class="user-tabs user-tabs-1580"]//div[@class=tab_list_item]')[3:]
    print(all_trs)
    print(len(all_trs))
    for tr in all_trs:
        topic = Topic()
        if tr.xpath("//div/div[3]/div/div/div[2]/span/text()").extract():
            score = tr.xpath("//div/div[3]/div/div/div[2]/span/text()").extract()[0]
            topic.score =score
        topic_url = parse.urljoin(domain, tr.xpath("//div/div[2]/a/@href").extract()[0])
        topic_title = tr.xpath("//div/div[2]/a/span/text()").extract()[0]
        answer_nums = tr.xpath("//div/div[3]/div/div/div[3]/span/span/text()").extract()[0]
        click_nums =tr.xpath("//div/div[3]/div/div/div[1]/span/text()").extract()[0]
        topic.id = int(topic_url.split("/")[-1])
        topic.title = topic_title
        topic.click_nums = int(click_nums)
        topic.answer_nums = int(answer_nums)
        topic.save(force_insert=True)

这里的Xpath跟您的有所不同,因为csdn改版了。
是要直接分析Sources吗?
希望您能给予答复。

正在回答 回答被采纳积分+3

1回答

bobby 2021-09-10 09:56:54

所有的http请求库直接请求到的都是源码中的部分而不是f12的部分,不过这样也不一定,f12是执行js之后的html内容,如果这个页面没有js去改变html结构那么这个时候两者的内容是一致的,课程中讲解过这点的

0 回复 有任何疑惑可以回复我~
  • 提问者 李_冉 #1
    现在csdn变成动态网页了,显然有js
    回复 有任何疑惑可以回复我~ 2021-09-10 11:14:52
  • bobby 回复 提问者 李_冉 #2
    csdn已经改版加强了反爬手段,最新的破解源码已经上传到github上了,我这几天正在重新录制csdn的章节,会更加详细说明具体细节,一周左右会上线
    回复 有任何疑惑可以回复我~ 2021-09-23 16:51:31
  • 提问者 李_冉 #3
    好的,谢谢
    回复 有任何疑惑可以回复我~ 2021-09-23 18:35:03

相似问题

登录后可查看更多问答,登录/注册

问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号