1. 怎样使用scrapy爬取js动态生成的数据
解决方案:
利用第三方中间件来提供JS渲染服务: scrapy-splash 等。
利用webkit或者基于webkit库
Splash是一个Javascript渲染服务。它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT。Twisted(QT)用来让服务具有异步处理能力,以发挥webkit的并发能力。
下面就来讲一下如何使用scrapy-splash:
利用pip安装scrapy-splash库:
$ pip install scrapy-splash
scrapy-splash使用的是Splash HTTP API, 所以需要一个splash instance,一般采用docker运行splash,所以需要安装docker。
安装docker, 安装好后运行docker。
拉取镜像(pull the image):
$ docker pull scrapinghub/splash
用docker运行scrapinghub/splash:
$ docker run -p 8050:8050 scrapinghub/splash
配置splash服务(以下操作全部在settings.py):
1)添加splash服务器地址:
SPLASH_URL = 'http //localhost:8050'
2)将splash middleware添加到DOWNLOADER_MIDDLEWARE中:
DOWNLOADER_MIDDLEWARES = {
'scrapy_splash.SplashCookiesMiddleware': 723,
'scrapy_splash.SplashMiddleware': 725,
'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 810,
}
3)Enable SplashDeduplicateArgsMiddleware:
SPIDER_MIDDLEWARES = {
'scrapy_splash.SplashDeduplicateArgsMiddleware': 100,
}
4)Set a custom DUPEFILTER_CLASS:
DUPEFILTER_CLASS = 'scrapy_splash.SplashAwareDupeFilter'
5)a custom cache storage backend:
HTTPCACHE_STORAGE = 'scrapy_splash.SplashAwareFSCacheStorage'
例子
获取HTML内容:
import scrapy
from scrapy_splash import SplashRequest
class MySpider(scrapy.Spider):
start_urls = ["http //example com", "http //example com/foo"]
def start_requests(self):
for url in self.start_urls:
yield SplashRequest(url, self.parse, args={'wait': 0.5})
def parse(self, response):
# response.body is a result of render.html call; it
# contains HTML processed by a browser.
# ...
2. 怎样使用scrapy爬取js动态生成的数据
写爬虫的童鞋可以试试神箭手云爬虫,自带JS渲染、代理ip、验证码识别等功能,还可以发布和导出爬取的数据,生成图表等,都在云端进行,不需要安装开发环境。 神箭手云爬虫上有开发者文档,里面有很多爬虫技巧哦
3. 爬虫怎么爬取js动态生成的数据
我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。
1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器
4. java爬虫怎么抓取js动态生成的内容
我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。
1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器
5. 如何用Python爬虫抓取JS动态筛选内容
打开浏览器,以google chrome为例,输入你上面的网址。然后按F12打开调试窗口,然后尝试勾选左边某一个选项,马上可以看到右边的调试窗口有东西输出。找到第一个输出的行,点击header,可以看到每一个都是用的post方法。所以只需要构造相应的header并post上去,就可以得到你想要的数据了。
尝试每一个request都点开看一下
就是你要构造的数据
FormData就是你要构造的数据
把数据构造好然后使用post函数发送给网站
这个得到的是一个网页格式的数据。
而这个发放返回的是json数据,然后编码成dict格式 提取出数据就可以了。
6. 用php 怎么抓取js+ajax动态生成的页面内容
第一步,查看网页源代码,找到ajax请求的URL。
比如,js代码为:
$.ajax({
url: 'ajax.php?id=100',
data: {ad_num:num,ad_str:str,cart_update_time:cart_update_time},
type: 'POST',
dataType: 'text',
async : false,
success: function(data){
}
其中的ajax.php?id=100就是ajax请求的URL。
第二步,拼接URL,用网站的域名加上这个找到的请求路径。
比如,网站域名为: www.abc.com 拼接后的URL为:www.abc.com/ajax.php?id=100
第三步,用PHP读取第二步拼接出的URL即可。
7. 爬虫小白问个不知道关于scrapy爬取json动态生成列表的问题!
对于只是读取某几个网站更新内容的爬虫完全没必要在python代码中实现增量的功能,直接在item中增加Url字段。 item['Url'] = response.url 然后在数据端把储存url的column设置成unique。 之后在python代码中捕获数据库commit
8. 如何用Python爬虫抓取JS动态筛选内容
可以使用splash来处理js页面,然后解析处理过后的页面内容。你可以参考下这个文档
http://123.103.9.198:9270/pages/viewpage.action?pageId=919763