在获取网页时出现的错误

来源:2-2 json知识点学习

艾卡西亚在下雨

2019-04-28

在爬取微博移动端时出现问题 这是爬取的URL 链接描述
在爬取第一个URL(https://m.weibo.cn/comments/hotflow?id=4366030191536361&mid=4366030191536361&max_id_type=0)时没有问题
但是在爬取第二个URL(https://m.weibo.cn/comments/hotflow?id=4366030191536361&mid=4366030191536361&max_id=140209465195163&max_id_type=0)出现了错误。
这两个URL的网页都是一样的,在preview 和 response 中都能看见数据,而且结构也一样,理应可以用同样的方式获取数据呀。
第一个URL在地址栏中打开可以看见全部数据代码,第二个URL只能看见 {“ok”:0}

import requests
import json
from pyquery import PyQuery

storagePath = './static/comments.txt'


def get_html_doc(url):
    response = requests.get(url)
    data = json.loads(response.text)
    # pprint.pprint(data)
    users = data['data']['data']

    with open('./static/comments.txt', 'a') as f:
        for user in users:
            # print('**********************************************')
            print(PyQuery(user['text']).text())
            data = str(PyQuery(user['text']).text())
            f.write(data + '\n')
            # print("用户名: " + user['user']['screen_name'])
            # print("用户主页: " + user['user']['profile_url'])


def main():
    # url = 'https://m.weibo.cn/comments/hotflow?id=4364742854056110&mid=4364742854056110&max_id_type=0'
    # url = 'https://m.weibo.cn/comments/hotflow?id=4366030191536361&mid=4366030191536361&max_id_type=0'
    url = 'https://m.weibo.cn/comments/hotflow?id=4366030191536361&mid=4366030191536361&max_id=140209465195163&max_id_type=0'
    get_html_doc(url)


if __name__ == '__main__':
    main()


图片描述

写回答

1回答

NavCat

2019-04-29

看了一下你的代码,第三个URL爬取不成功,在浏览器直接访问的时候会跳转到登录页面去,多了一个参数max_id=140209465195163,去掉就可以了。


这种大网站一般都有反扒机制的,有些需要登录,有些要验证码,有些还要求你登录。

你可以尝试着把你登录后的cookie放到请求头里面试试。

0
1
艾卡西亚在下雨
非常感谢!谢谢老师
2019-04-29
共1条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程