怎样使用scrapy爬取js动态生成的数据

2024-05-11 02:30

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.
  # ...

怎样使用scrapy爬取js动态生成的数据

2. 怎样使用scrapy爬取js动态生成的数据

写爬虫的童鞋可以试试神箭手云爬虫,自带JS渲染、代理ip、验证码识别等功能,还可以发布和导出爬取的数据,生成图表等,都在云端进行,不需要安装开发环境。 神箭手云爬虫上有开发者文档,里面有很多爬虫技巧哦

3. 爬虫怎么爬取js动态生成的数据

我用Jsoup写爬虫,一般遇到html返回没有的内容。但是浏览器显示有的内容。都是分析页面的http请求日志。分析页面JS代码来解决。
1、有些页面元素被隐藏起来了->换selector解决
2、有些数据保存在js/json对象中->截取对应的串,分析解决
3、通过api接口调用->伪造请求获得数据
还有一个终极方法
4、使用phantomjs或者casperjs这种headless浏览器

爬虫怎么爬取js动态生成的数据

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格式 提取出数据就可以了。

如何用Python爬虫抓取JS动态筛选内容

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

爬虫小白问个不知道关于scrapy爬取json动态生成列表的问题!

8. 如何用Python爬虫抓取JS动态筛选内容

可以使用splash来处理js页面,然后解析处理过后的页面内容。你可以参考下这个文档
http://123.103.9.198:9270/pages/viewpage.action?pageId=919763