<h1>1 分析首页信息,获取每个标题真实链接<h1>
我们的目的是获得每个首页每篇文章的链接的url。
我们首先打开今日头条的首页,在搜索处搜索街拍。会出现如下的结果。
![](https://img.haomeiwen.com/i4286978/fee506a1ae2e68da.png)
我们要爬取的是图集里面的图片。我们再打开图片,点开检查。得到下面的结果。
![](https://img.haomeiwen.com/i4286978/ebc33561e07ecff0.png)
筛选其中XHR里面的文件,发现我们在滑动鼠标的时候,里面的文件随着鼠标的滑动而增加。在随意点开里面的一个文件,
![](https://img.haomeiwen.com/i4286978/19872e1e822292a5.png)
![](https://img.haomeiwen.com/i4286978/9e5459f28fa6a751.png)
发现其都是一个基础的网址http://www.toutiao.com/search_content/? 再加上请求的各种信息。
offset:0
format:json
keyword:街拍
autoload:true
count:20
cur_tab:3
我们再分析Response里面的内容,发现我门所需要的每个图集的信息都在里面。
![](https://img.haomeiwen.com/i4286978/e8afdce7ccb9991f.png)
![](https://img.haomeiwen.com/i4286978/1aabf34111112cdb.png)
其中我们需要目标链接url地址也在article_url里面,我们随意找一个url来打开,
![](https://img.haomeiwen.com/i4286978/ecd3fb522c225495.png)
发现其就为我们所需要的目标链接。
<h1>2 分析目标链接里面的信息<h1>
我们的目的是获取目标网页里面每张图片的url。
首先,我们任意打开一个目标链接。经过分析,其中每张图片的url信息都在其返回信息的gallery里面。
![](https://img.haomeiwen.com/i4286978/067c3a6abadd39cd.png)
最后,我们只需要用正则匹配处每张图片的url就可以实现我们所需要的下载图片的功能。
<h1>3 下面我们开始编码来依次实现这些功能<h1>
<h3>(1) 首页的解析,获得每每个标题的url链接<h3>
我们将offset和keyword设为两个可变参数,改变offset的值就可以获得不同的目标链接信息。改变keyword的值就可以将‘街拍’改成 ‘动画’,‘自然’等等各种不同的图集。
![](https://img.haomeiwen.com/i4286978/e350bdaae6250dd8.png)
![](https://img.haomeiwen.com/i4286978/969b50289edf90b4.png)
发现我们获得的首页数据为json格式的数据。之后我们就需要解析这里面的json数据,通过解析json数据获得其中每个目标网页的url链接.
![](https://img.haomeiwen.com/i4286978/843258da07755c68.png)
![](https://img.haomeiwen.com/i4286978/ed62ddb1f8fe9636.png)
<h3>(2) 解析目标页的信息,获得每张图片的url链接<h3>
![](https://img.haomeiwen.com/i4286978/66d6e3fb59a9ac28.png)
![](https://img.haomeiwen.com/i4286978/1d867520572de516.png)
至此,我们获得了目标图片的url链接,但是这里的url链接隐藏在json格式的字符串里面,我么之后就需要解析json字符串来获得其中的url链接.
![](https://img.haomeiwen.com/i4286978/3a4a9770622d2ca9.png)
![](https://img.haomeiwen.com/i4286978/148a140e2509721e.png)
我们在这里就获得了所有图片的url链接信息,之后我们就需要将数据存储到mongodb数据库。
<h3>(3) 将数据存储到mongodb数据库<h3>
![](https://img.haomeiwen.com/i4286978/3bcc404c610865da.png)
![](https://img.haomeiwen.com/i4286978/e2ac9a6090908ffe.png)
获取到的数据如图。
<h3>(4) 下载所获得的图片链接<h3>
![](https://img.haomeiwen.com/i4286978/77f4ae366aa9f15f.png)
![](https://img.haomeiwen.com/i4286978/5f5a220948b9d74d.png)
<h3>(5) 引入多线程下载所获得的图片链接<h3>
![](https://img.haomeiwen.com/i4286978/1928f41a4d2fc7d4.png)
![](https://img.haomeiwen.com/i4286978/2449207674d7d8d1.png)
明显感觉其抓取速度加快,之后大功告成。
网友评论