原标题:简单易学的Python爬虫教程!新手必看

python 推特 python推特爬虫教学_开发人员

二、抓取前的分析

以Chrome为例,抓取前的分析步骤如图:

python 推特 python推特爬虫教学_一支python教程_02

python 推特 python推特爬虫教学_Chrome_03

三、开始撰写第一只网络爬虫

Requests库

网络资源撷取套件

改善Urllib2的缺点,让使用者以最简单的方式获取网络资源

jupyter

使用jupyter来抓取网页并打印在浏览器中,再按 Ctrl-F 查找对应的内容,以确定我们要爬去的内容在该网页中。

测试示例:

python 推特 python推特爬虫教学_python 推特_04

四、用BeautifulSoup4剖析网页元素

测试示例:

python 推特 python推特爬虫教学_Chrome_05

五、BeautifulSoup基础操作

使用select找出含有h1标签的元素

python 推特 python推特爬虫教学_Chrome_06

使用select找出含有a的标签

python 推特 python推特爬虫教学_一支python教程_07

使用select找出所有id为title的元素(id前面需要加#)

python 推特 python推特爬虫教学_json_08

使用select找出所有class为link的元素(class前面需要加.)

python 推特 python推特爬虫教学_开发人员_09

使用select找出所有a tag的href链接

python 推特 python推特爬虫教学_一支python教程_10

六、观察如何抓取新浪新闻信息

关键在于寻找CSS定位

Chrome开发人员工具(进入开发人员工具后,左上角点选元素观测,就可以看到了)

python 推特 python推特爬虫教学_开发人员_11

Chrome寻找元素定位.png

Firefox开发人员工具

InfoLite(需FQ)

七、制作新浪新闻网络爬虫

抓取时间、标题、内容

python 推特 python推特爬虫教学_一支python教程_12

抓取新闻内文页面

python 推特 python推特爬虫教学_python 推特_13

python 推特 python推特爬虫教学_json_14

内文资料信息说明图.png

python 推特 python推特爬虫教学_Chrome_15

获取新闻内文标题、时间、来源

python 推特 python推特爬虫教学_json_16

其中涉及时间和字符串转换

整理新闻内文、获取编辑名称

python 推特 python推特爬虫教学_开发人员_17

整理新闻内文步骤:

python 推特 python推特爬虫教学_python 推特_18

最终简写为一句话。

抓取新闻评论数

python 推特 python推特爬虫教学_python 推特_19

解释:

评论是是通过JS代码传过来的;既然是JS,那么通过AJAX传过来的概率很高,于是点到 XHR中看,但是发现Response中没有出现总评论数 2 ; 然后就只能去 JS 里面了,地毯式搜索,找哪个Response里出现了总评论数 2 ,终于找到了。

python 推特 python推特爬虫教学_python 推特_20

找到链接和请求方式

今天补的截图,评论数实时增加,请不要觉得奇怪 ^_^

然后就可以撸码了。

python 推特 python推特爬虫教学_json_21

解释:

var data={......} 看着很像是个 json 串,去掉 var data= ,使其变为 json 串。

可以看到, jd 串中就是评论的信息了。

python 推特 python推特爬虫教学_一支python教程_22

回到Chrome开发工具中,浏览评论数量。

python 推特 python推特爬虫教学_一支python教程_23

获取新闻标识符(新闻ID)

方式1:切割法

python 推特 python推特爬虫教学_python 推特_24

方式2:正则表达式

python 推特 python推特爬虫教学_开发人员_25

八、建立获取评论数函数

做一个总整理,把刚刚取得评论数的方法整理成一个函数。之后有新闻网页的链接丢进来,可以通过这个函式去取得它的总评论数。

python 推特 python推特爬虫教学_开发人员_26

九、建立新闻内文信息抽取函数

python 推特 python推特爬虫教学_Chrome_27

python 推特 python推特爬虫教学_开发人员_28

十、从列表链接中取出每篇新闻内容

如果 Doc下面没有我们想要找的东西,那么就有理由怀疑,这个网页产生资料的方式,是通过非同步的方式产生的。因此需要去 XHR和 JS下面去找。有时候会发现非同步方式的资料 XHR下没有,而是在 JS下面。这是因为这些资料会被 JS的函式包装,Chrome的开发者工具认为这是JS文件,因此就放到了 JS下面。在 JS中找到我们感兴趣的资料,然后点击 Preview

预览,如果确定是我们要找的,就可以去 Headers中查看 Request URL和 Request Method了。一般 JS中的第一个可能就是我们要找的,要特别留意第一个。

python 推特 python推特爬虫教学_json_29

1、选择Network标签

2、点选JS

3、 找到页面链接page=2

处理分页链接

python 推特 python推特爬虫教学_开发人员_30

注意头尾,需要去掉头和尾,将其变成标准的 json 格式。

python 推特 python推特爬虫教学_Chrome_31

十一、建立剖析清单链接函数

将前面的步骤整理一下,封装到一个函式中。

python 推特 python推特爬虫教学_python 推特_32

十二、使用for循环产生多页链接

python 推特 python推特爬虫教学_开发人员_33

python 推特 python推特爬虫教学_开发人员_34

十三、批次抓取每页新闻内文

python 推特 python推特爬虫教学_开发人员_35

python 推特 python推特爬虫教学_开发人员_36

十四、 使用pandas整理数据

Python for Data Analysis

源于R

Table-Like格式

提供高效能、简易使用的资料格式(Data Frame)让使用者可以快速操作及分析资料

python 推特 python推特爬虫教学_json_37

十五、保存数据到数据库

python 推特 python推特爬虫教学_json_38

python 推特 python推特爬虫教学_python 推特_39

python 推特 python推特爬虫教学_一支python教程_40

大家感兴趣的可以试一试,欢迎讨论交流~~~