本来今天打算把以前的爬虫记录复制粘贴过来的,后来想想有点没意思,就想再写一次爬虫,顺便加上之前学的可视化数据分析。
有点糊涂,不知道该从哪里说起,也不知道该怎么讲。所以还是按照我自己的爬虫步骤讲吧
这里建议用jupyter notebook编辑,方便数据的展示
总的步骤就是:①导入模块 ②配置绘图风格 ③反爬 ④开始写爬虫代码 ⑤整合 ⑥绘图
大概就是以上这些步骤。
①导入包。今天想通过爬取数据绘制的图像有:条形图、饼图、地理热力图
#导入要用到的模块
import requests #网络请求
importreimport pandas as pd #数据框操作
importnumpy as npimport matplotlib.pyplot as plt #绘图
import matplotlib as mpl #配置字体
from pyecharts import Geo #地理图
import time #增加延时
import random
这里可能会出现的问题:这些模块都要自己下载的哦,具体方法可以自己去网上找,其实挺简单。大部分都是pip install就就解决的事情。
还有一些可能要自己到文件下载网站下载,还会让你选相应的匹配文件,这里的匹配是python版本匹配、位数匹配,如果不知道的话就打开CMD命令窗口进入python,输入以下:
importpipprint(pip.pep425tags.get_supported())
我的话就出现了:
所以我选的应该是箭头所指的格式的文件。
②设置绘图格式和绘图风格
mpl.rcParams['font.sans-serif'] = ['SimHei'] #这个是绘图格式,不写这个的话横坐标无法变成我们要的内容#配置绘图风格
plt.rcParams['axes.labelsize'] = 8.
plt.rcParams['xtick.labelsize'] = 12.
plt.rcParams['ytick.labelsize'] = 12.
plt.rcParams['legend.fontsize'] =10.
plt.rcParams['figure.figsize'] = [8.,8.]
上面的意思通过英文很容易理解,
③反爬虫
反爬措施可以通过firefox里的请求头里的信息实现,直接把请求头里的信息复制过来就好,用其他浏览器的也行,把cookies注释掉,因为不要登录信息。
我用的是火狐。首先按F12,在网络里找到列表里的postion开头的内容,然后找到请求头(其他浏览器可能是Rrequest什么的)
将请求头里的内容全部复制下来,需要注意的是,通过火狐浏览器复制的请求头会出现”...“,当我们复制过来发现有省略号时,把那个有省略号的地方打全。只需双击目标内容,请求头那里就会出现完整的句子,我把cookie注释掉了,因为不需要。代码如下
header = {'Accept':'application/json, text/javascript, */*; q=0.01','Accept-Encoding':'gzip, deflate, br','Accept-Language':'zh-CN,zh;q=0.8','Connection':'keep-alive','Content-Length':'56','Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',#Cookie:LGUID=20161214153335-9f0eacc2-c1cf-11e6-bd6c-5254005c3644; user_trace_token=20180122030442-efefe00e-fedd-11e7-b2cb-525400f775ce; LG_LOGIN_USER_ID=e619b07cb5d026e017473de3d4ef1bb5a3da9a0ddd6ea0a5; gray=resume; sensorsdata2015jssdkcross=%7B%22distinct_id%22%3A%227288096%22%2C%22%24device_id%22%3A%221626117eb3016-0703ff024b7ae5-71292b6e-1049088-1626117eb3569%22%2C%22first_id%22%3A%221626117eb3016-0703ff024b7ae5-71292b6e-1049088-1626117eb3569%22%7D; WEBTJ-ID=20180403125347-16289da9860300-0dcabf1bb6b166-71292b6e-1049088-16289da98619b; login=true; unick=%E6%8B%89%E5%8B%BE%E7%94%A8%E6%88%B73739; showExpriedIndex=1; showExpriedCompanyHome=1; showExpriedMyPu