回忆一下,我们有的时候在看一些网站的时候,是否遇见过一些网站里面的信息开始显示一部分,然后当我们把鼠标滑轮向下拉动后,又显示出一些信息。这就是异步加载。我的上一篇文章python爬虫百度贴吧标题数据爬取的所有标题都是页面已经加载好的。但是对于这种开始没有加载好的数据我们应该如何爬取呢?
我们现在来打开Chrome的审查元素,如何所示
我们在网页的源代码中,我们可以发现,每个卡片对应的标题都存放在这种格式的代码中。
<div class="card-title">Titomirov Vodka LLC</div>
OK,我们寻找到了规律,那么我们就可以根据这个规律构建我们的程序:
title = re.findall(‘"card-title">(.*?)</div>‘,post_html.text,re.S)
以上代码不明白什么意思,可以观看python爬虫百度贴吧标题数据
那么查找标题我们写完了,接下来进入我们的重点。
当我们向下滑动,并且滑动到底部的时候,会出现这种现象:
这就是在异步加载数据,那么我们如何获取这些异步加载瘦的数据呢?
使用我们的审查元素,点击NetWork,如图所示:
现在所有的数据都是空的,这个时候我们向下滑动我们的鼠标滚轮,这个时候你就会看见很多的数据,如图:
在NetWork中点击第一个name,我们会看见以下信息:
现在我们来分析一下:
查看
Remote Address:50.18.112.181:443
Request URL:https://www.crowdfunder.com/deals&template=false&random_seed=1
Request Method:POST
Status Code:200 OK
Request Method:POST这说明我们向网页提交了数据
提交地址:https://www.crowdfunder.com/deals&template=false&random_seed=1
我们接下来分析提价数据,往下翻,找到:
form Data
entities_only:true
page:1
以上就是提交信息,根据英文意思判断 page就是我们的页数。根据以上信息 我们就可以构建我们的表单了:
#注意这里的page后面跟的数字需要放到引号里面。
post_data = {
‘entities_only‘:‘true‘,
‘page‘:‘1‘
}
提交此表单后,我们就可以获取返回信息,在返回信息中应用正则表达式,提取我们感兴趣饿的内容。
完整代码如下:
#-*-coding:utf8-*-
import requests
import re
# url = ‘https://www.crowdfunder.com/browse/deals‘
url = ‘https://www.crowdfunder.com/deals&template=false‘
post_data = {
‘entities_only‘:‘true‘,
‘page‘:‘1‘
}
# 提交并获取返回数据
post_html = requests.post(url,data=post_data)
#对返回数据进行分析
titles = re.findall(‘"card-title">(.*?)</div>‘,post_html.text,re.S)
for title in titles:
print title
当你将’page’:’1’,改为’page’:’2’ 将会得到不同的数据。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/lastdays_l/article/details/47317661