爬虫实战————简书用户信息获取
爬虫思路分析
爬取的内容为简书笔者用户动态的信息(https://www.jianshu.com/c/22f2ca261b85),如图所
示。
当首次打开该网页URL,选择热门,会发现网页URL并没有发生变化,如图所示,所以判断该网页
采用了异步加载技术。
打开Chrome浏览器的开发者工具(按 F12 键),单击Network选项卡,选中 XHR 项,可发现网页
加载了用户信息的文件,如图所示, 但并不是我们想获取的信息.
依次点击最新评论, 最新收录和热门, 在开发者工具中会看到新的 XHR 产生,这个网址对应的信
息就是我们想要获取的文章信息;
观察该文件的 Response ,发现返回的是XML文件,内容也正是用户“动态”内容(如图),每个
li 标签就是一个用户动态内容。
通过下滑浏览,会发现也是使用了异步加载技术进行分页处理的,如图所示,以此记录前几页的
URL:https://www.jianshu.com/c/22f2ca261b85?order_by=commented_at&page=2 https://www.jianshu.com/c/22f2ca261b85?order_by=commented_at&page=3 https://www.jianshu.com/c/22f2ca261b85?order_by=commented_at&page=4
要求
数据解析
需要爬取的信息有:作者ID、文章名、发布日期、字数、阅读、评论、喜欢、赞赏数量等信息;
数据存储
csv 文件
MySQL 数据库
Redis 数据库
数据分析
统计该用户阅读数大于1000的文章个数和小于1000的文章个数, 并以饼状图的方式绘制。
代码实现
数据爬取并存储
from concurrent.futures.thread import ThreadPoolExecutor
import re
import requests
import pandas as pd
def get_page(url):
"""
获取的网页源代码: 抓取代理
:param url:
:param options:
:return:
"""
print('[+] 正在抓取', url)
try:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36'
}
response = requests.get(url, headers=headers)
print('[+] 抓取成功', url, response.status_code)