+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-08(121)

2019-09(97)

2019-10(17)

2019-11(3)

2019-12(21)

爬取雪球网的新闻数据

发布于2021-01-15 21:03     阅读(955)     评论(0)     点赞(14)     收藏(5)


0

1

2

3

4

5

6

7

以下将从处理cookie的两种方式来分析爬取雪球网的新闻数据,

一个是手动处理cookie,到源码去抓包,找到他的request header里面的cookie,复制出来封装到headers内;

另一个是自动处理cookie,引入模块requests的session,这个方法和requests一样可以发送get和post请求,但是他在发送请求的时候自动携带cookie

那么什么情况下我们爬取数据需要用到cookie呢?

首先我们要知道cookie他是服务器记录客户端的一种状态,有一些网站的爬取,需要先通过验证信息才可以进去主页面,如果我们在爬取大量数据的情况下,可能需要反复登录才可以爬取,这样效率不高,下面通过简单分析爬取雪球网的新闻标题来区分两种爬取的异同

我们先分析网站是不是ajax动态获取数据,通过xhr我们看到每次向下拉,xhr总是有新的数据显示,说明该网站是ajax动态获取数据的

分析完网站的基本情况之后,我们先按照之前的通用爬虫去爬取数据

  1. import requests
  2. url="https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20369998&count=15&category=-1"
  3. headers ={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
  4. page_json = requests.get(url=url,headers=headers).json()
  5. print(page_json)

输出结果为:

{'error_description': '遇到错误,请刷新页面或者重新登录帐号后再试', 'error_uri': '/v4/statuses/public_timeline_by_category.json', 'error_data': None, 'error_code': '400016'}

出现上面的这种原因是因为cookie的反爬机制

手动处理cookie

  1. import requests
  2. url="https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20369998&count=15&category=-1"
  3. headers ={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36",
  4. "Cookie": "aliyungf_tc=AQAAADriOUCilQoAxZ5btPQfYv7152ox; acw_tc=2760824915856669537353368e2ea5d4c1b87e45dadece330ae07e755b96f1; xq_a_token=2ee68b782d6ac072e2a24d81406dd950aacaebe3; xqat=2ee68b782d6ac072e2a24d81406dd950aacaebe3; xq_r_token=f9a2c4e43ce1340d624c8b28e3634941c48f1052; xq_id_token=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJ1aWQiOi0xLCJpc3MiOiJ1YyIsImV4cCI6MTU4NzUyMjY2MSwiY3RtIjoxNTg1NjY2OTA4NDgwLCJjaWQiOiJkOWQwbjRBWnVwIn0.YCQ_yUlzhRvTiUgz1BWWDFrsmlxSgsbaaKs0cxsdxnOaMhIjF0qUX-5WNeqfRXe15I5cPHiFf-5AzeRZgjy0_bSId2-jycpDWuSIseOY07nHM306A8Y1vSJJx4Q9gFnWx4ETpbdu1VXyMYKpwVIKfmSb5sbGZYyHDJPQQuNTfIAtPBiIeHWPDRB-wtf0qa5FNSMK3LKHRZooXjUgh-IAFtQihUIr9D81tligmjNYREntMY1gLg5Kq6GjgivfF9CFc11sJ11fZxnSw9e8J_Lmx8XXxhwHv-j4-ANUSIuglM4cT6yCsWa3pGAVMN18r2cV72JNkk343I05DevQkbX8_A; u=481585666954081; Hm_lvt_1db88642e346389874251b5a1eded6e3=1585666971; device_id=24700f9f1986800ab4fcc880530dd0ed; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1585667033"}
  5. page_json = requests.get(url=url,headers=headers).json()
  6. print(page_json)
  7. 手动处理cookies爬取雪球网

自动处理cookie

  1. import requests
  2. from lxml import etree
  3. session = requests.Session()
  4. url="https://xueqiu.com/v4/statuses/public_timeline_by_category.json?since_id=-1&max_id=20369998&count=15&category=-1"
  5. headers ={"User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"}
  6. # 第一步,向雪球网首页发送一条请求,获取cookie
  7. session.get(url="https://xueqiu.com",headers=headers)
  8. # 第二步,获取动态加载的新闻数据
  9. page_json = session.get(url=url,headers=headers).json()
  10. print(page_json)
  11. 自动处理cookie爬取雪球网

 

原文链接:https://blog.csdn.net/u011323949/article/details/112621080

0

1

2

3

4

5



所属网站分类: 技术文章 > 博客

作者:天才也疯狂

链接: https://www.pythonheidong.com/blog/article/771912/078854954368ecea8aa2/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

14 0
收藏该文
已收藏

评论内容:(最多支持255个字符)