前言:
目前小伙伴们对“js的数据请求”可能比较注重,朋友们都想要学习一些“js的数据请求”的相关资讯。那么小编在网摘上收集了一些对于“js的数据请求””的相关内容,希望小伙伴们能喜欢,姐妹们快快来学习一下吧!# !/usr/bin/env python
# -*- encoding: utf-8 -*-
# Created on 2018-07-06 12:30:04
# Project: test1
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {
}
@every(minutes=24 * 60)
def on_start(self):
self.crawl(
';,
callback=self.index_page, validate_cert=False)#初始的第一个动态url
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
print(response)
web_data = response.text#返回的数据
data = re.findall(r'[^()]+', web_data)[1]#数据处理,得到需要的json数据串
content_list = json.loads(data)#得到json数据
url = []
for i in range(0, len(content_list['content_list'])):#从json数据中获取url,title
url.append(content_list['content_list'][i]['url'])
print(content_list['content_list'][i]['url'])
self.crawl(content_list['content_list'][i]['url'], callback=self.detail_page, validate_cert=False)
current_page = 1 # 当前页数
total_page = 10 # 总页数
next_page = current_page + 1 # 下一页
if next_page <= total_page: # 获取下一页的数据构造翻页
self.crawl(
'{}&maxNo=12&citycode=&length=36&tag=1&username=%25E4%25B8%25AD%25E6%2596%2587'.format(
str(next_page)), callback=self.index_page)
@config(priority=2)
def detail_page(self, response):
return {
"url": response.url,
"title": response.doc('title').text(),
}
我们导入了2个模块他们的作用分别是:re用于正则获取数据,json用于json数据转化
开始异步爬虫分析:
第一步:浏览器打开需要爬取的url:
按F12使用谷歌浏览器自带的浏览器network工具,查看请求,或者自己使用抓包工具也可以(当前没有请求,莫方,你手动去点击下一页制造请求):
点击下一页或者直接刷新,就会在network上边看到有请求,这里注意看XHR和JS部分,有的是用js封数据请求会在js里面,也有会在XHR里面的异步请求:
从这里我们就可以清楚的在xhr返回的header里面看到异步请求的url,这里我们直接访问该url(或者在preview里面可以看到返回的数据)可以看到返回的数据就是新闻数据,也就是我们要爬的数据。
这下我们知道数据是通过这样式的url传过来的,因此我们需要分析url格式,不要怕一般都很有规律性,都是根据下边的参数构造的,找到规律就能构造出url出来,这里不详细分析,具体看目标网站如何封装。
到这里,我们基本知道接下来就是根据构造的url去写爬虫脚本,做详细的数据解析,这个就不详细讲了,具体问题具体分析。
这就是一种解决动态/异步请求html数据爬取的一种思路,有其他思路可以一起沟通。
标签: #js的数据请求