datawhale爬虫实训4
DataWhale-Task4(爬取丁香园2)
任务:使用lxml
爬虫帖子相关的回复与部分用户信息(用户名,头像地址,回复详情)
难点:需要登录才能看到所有回复
浏览器登录上去,查看cookies
信息,复制,通过request.get()
的参数使用标识登录身份的cookies
,这样便着请求所回复(直接请求帖子主页的只是html
,需要向对应的api发起请求才能看到回帖数据)
cookies = {}
temp = "DXY_USER_GROUP=49; __auc=f5db5ffc1693f4415a8b9b324af; _ga=GA1.2.406327704.1551544823; _gid=GA1.2.832234072.1551600247; __utma=1.406327704.1551544823.1551575932.1551655682.5; __utmz=1.1551655682.5.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __utmz=3004402.1551676197.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); JUTE_BBS_DATA=59a1c912e729f883a4072343bbd3cf3ce120b0d2a9073d1f98b4b4abb6b976855a9d60443f3910a91a2f4acd5ba5b796cb23f957a410053aaeca64aaa758f7468c5f3b6e4f5e8b3afdde9ab9a36c4e7c599039e6942142f476034f89445921cdfdac46fbcd62e2b2d57ebc2c50c50d8e1b14d314431af16b; __utmc=3004402; JUTE_SESSION_ID=d8ff12d6-4a18-49b7-a793-3cec155e2871; JUTE_TOKEN=364c5b97-0a5e-479b-bcb2-4fa6e665aa55; JSESSIONID=0D8D5058CEC7915AFFE1E95EEB7ECDF1; __utma=3004402.406327704.1551544823.1551693466.1551704245.3; __utmt=1; __utmb=3004402.1.10.1551704245; JUTE_SESSION=e8ecebb9b808ddb678837312dda5b1b477f72176e200de7dd3f4858315fb204c21184bb31cedc24a7c1f7c4dcccee51ab23a4595b8e44787b9fd92479d0a34424ab9ce058850dba8"
for i in temp.split(';'):
li = i.strip().split('=')
cookies[li[0]] = li[1]
完整代码
import requests
import json
import re
from lxml import etree
def display(topic):
"""
topic: 字典,键值有 topic comment
topic key 主题名
comment key 相关评论
"""
print("主题:\n", topic['topic'])
print("主题评论:\n")
for item in topic['comment']:
for k, v in item.items():
print(k, '\n')
print('\t头像:', v['avatar'], '\n')
print('\t评论:', v['body'], '\n')
def main(url, headers, cookies):
topic = {}
index = 1
resp = requests.get(url, headers=headers, cookies=cookies)
maxpage = resp.json()['pageBean']['total'] # 获取回复的全部页数
topic['topic'] = resp.json()['subject'] # 该帖子的主题
topic['comment'] = [] # 回复列表
while index < maxpage:
target_url = url.format(index)
resp = requests.get(target_url, headers=headers, cookies=cookies)
for item in resp.json()['items']:
d = {
item['nickname']: {'avatar': item['user']['avatar'],
'body': item["body"]}
}
topic['comment'].append(d)
index += 1
display(topic)
if __name__ == '__main__':
cookies = {}
headers = {
'User-Agent': ('Mozilla/5.0 (X11; Linux x86_64)'
' AppleWebKit/537.36 (KHTML, like Gecko)'
' Chrome/68.0.3440.106 Safari/537.36')
}
# temp为复制的 cookies
temp = "DXY_USER_GROUP=49; __auc=f5db5ffc1693f4415a8b9b324af; _ga=GA1.2.406327704.1551544823; _gid=GA1.2.832234072.1551600247; __utma=1.406327704.1551544823.1551575932.1551655682.5; __utmz=1.1551655682.5.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __utmz=3004402.1551676197.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); JUTE_BBS_DATA=59a1c912e729f883a4072343bbd3cf3ce120b0d2a9073d1f98b4b4abb6b976855a9d60443f3910a91a2f4acd5ba5b796cb23f957a410053aaeca64aaa758f7468c5f3b6e4f5e8b3afdde9ab9a36c4e7c599039e6942142f476034f89445921cdfdac46fbcd62e2b2d57ebc2c50c50d8e1b14d314431af16b; __utmc=3004402; JUTE_SESSION_ID=d8ff12d6-4a18-49b7-a793-3cec155e2871; JUTE_TOKEN=364c5b97-0a5e-479b-bcb2-4fa6e665aa55; JSESSIONID=0D8D5058CEC7915AFFE1E95EEB7ECDF1; __utma=3004402.406327704.1551544823.1551693466.1551704245.3; __utmt=1; __utmb=3004402.1.10.1551704245; JUTE_SESSION=e8ecebb9b808ddb678837312dda5b1b477f72176e200de7dd3f4858315fb204c21184bb31cedc24a7c1f7c4dcccee51ab23a4595b8e44787b9fd92479d0a34424ab9ce058850dba8"
for i in temp.split(';'):
li = i.strip().split('=')
cookies[li[0]] = li[1]
url = ("http://3g.dxy.cn/bbs/bbsapi/mobile?"
"s=view_topic&checkUserAction=1&with"
"Good=1&order=0&size=20&id=509959&page={}")
main(url, headers, cookies)
结果
datawhale爬虫实训4的更多相关文章
- Python-爬虫实战 简单爬取豆瓣top250电影保存到本地
爬虫原理 发送数据 获取数据 解析数据 保存数据 requests请求库 res = requests.get(url="目标网站地址") 获取二进制流方法:res.content ...
- Python实训day07pm【Selenium操作网页、爬取数据-下载歌曲】
练习1-爬取歌曲列表 任务:通过两个案例,练习使用Selenium操作网页.爬取数据.使用无头模式,爬取网易云的内容. ''' 任务:通过两个案例,练习使用Selenium操作网页.爬取数据. 使用无 ...
- 自律训练法 John Sehorz
自律训练法,系1932年由德国精神医学医师John Sehorz所创立.他研究人们在催眠催眠状态下,所呈现的生理状态,如:沉重与温暖感.. ,因而,John Sehorz改以「逆向操作」之方式,由自我 ...
- Java爬取51job保存到MySQL并进行分析
大二下实训课结业作业,想着就爬个工作信息,原本是要用python的,后面想想就用java试试看, java就自学了一个月左右,想要锻炼一下自己面向对象的思想等等的, 然后网上转了一圈,拉钩什么的是动态 ...
- 利用爬虫将Yuan先生的博客文章爬取下来
由于一次巧遇,我阅读了Yuan先生的一篇博客文章,感觉从Yuan先生得博客学到很多东西,很喜欢他得文章.于是我就关注了他,并且想阅读更多出自他手笔得博客文章,无奈,可能Yuan先生不想公开自己得博客吧 ...
- 正则表达式和豆瓣Top250的爬取练习
datawhale任务2-爬取豆瓣top250 正则表达式 豆瓣250页面分析 完整代码 参考资料 正则表达式 正则表达式的功能用于实现字符串的特定模式精确检索或替换操作. 常用匹配模式 常用修饰符 ...
- 学校实训作业:Java爬虫(WebMagic框架)的简单操作
项目名称:java爬虫 项目技术选型:Java.Maven.Mysql.WebMagic.Jsp.Servlet 项目实施方式:以认知java爬虫框架WebMagic开发为主,用所学java知识完成指 ...
- 路飞学城—Python爬虫实战密训班 第三章
路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...
- Scrapy框架爬虫初探——中关村在线手机参数数据爬取
关于Scrapy如何安装部署的文章已经相当多了,但是网上实战的例子还不是很多,近来正好在学习该爬虫框架,就简单写了个Spider Demo来实践.作为硬件数码控,我选择了经常光顾的中关村在线的手机页面 ...
随机推荐
- HDU1698 Just a Hook 【线段树】+【成段更新】+【lazy标记】
Just a Hook Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...
- erlang Unicode 处理
最近在使用erlang做游戏服务器,而字符串在服务器编程中的地位是十分重要的,于是便想仔细研究下字符编码,以及erlang下的字符串处理.先从Unicode开始吧.... [Unicode] Unic ...
- 粗结MySql数据库基础知识点之一
首先弄什么是数据库? 数据库就是用来存储和管理数据的仓库. 数据库存储数据的优点: 1.可存储大量的数据 2.方便检索 3.保持数据的一致性,完整性 4.安全 可共享 5.通过组合分析,可以产 ...
- DirectFB学习之移植到nuc972平台 标签: DirectFBlinux图形加速驱动【转】
本文转载自:http://blog.csdn.net/jxgz_leo/article/details/70137304 [nuc972开发板购买地址,感谢支持](https://shop102749 ...
- C#中数据库备份还原 精简
C#中数据库备份还原 使用前要导入SQLDMO.dll(在com组件中导入Microsoft SQLDMO Object Library即可) /// /// DbOper类,主要应用SQLD ...
- hdoj--1418--抱歉(水题)
抱歉 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Subm ...
- 【POJ 2449】 Remmarguts' Date
[题目链接] http://poj.org/problem?id=2449 [算法] A*(启发式搜索) 首先,求第k短路可以用优先队列BFS实现,当T第k次入队时,就求得了第k短路,但是,这种做法的 ...
- 批量梯度下降(Batch gradient descent) C++
At each step the weight vector is moved in the direction of the greatest rate of decrease of the err ...
- compare正序与逆序
//list:在数据查询出来的Record集合 //juli:是需要比较的字段 //实现一个Comparator接口 //后面减去前面是正序 前面减去后面是倒叙 //我这里做的一个距离排序 R ...
- 关于SSL证书配置、升级的一些问题总结
SSL会成为网站.APP.小程序(小程序已经强制使用https)等项目的标配.关于SSL证书安装使用的问题今天总结下,以备用. 环境配置:windows server 2008 R2和IIS7.0 1 ...