`
zhouxi2010
  • 浏览: 50777 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

scrapy抓取ajax请求的网页

阅读更多

在上一篇博客

http://zhouxi2010.iteye.com/blog/1450177

中介绍了用scrapy抓取网页,但是只能抓取普通html中的链接,对于ajax请求的网页却抓不到,但是实际应用中ajax请求又是十分普遍的,所以这里在记录下抓取ajax页面的方法.

仍然是spiders/book.py:

class BookSpider(CrawlSpider):  
    ................
    ................
    ................
    def parse_item(self, response):  
        hxs = HtmlXPathSelector(response)  
        item = BookItem()  
        ........
        ..........
        #这里url是虚构的,使用时需要修改
        url =  "http://test_url/callback.php?ajax=true"
        request =  Request(url, callback=self.parse_ajax)
        request.meta['item'] = item
        #这里将ajax的url找出来,然后够找请求,框架执行请求收到返回后再回调
        yield request

    def parse_ajax(self, response):
        data = response.body
        #这里写正则匹配或者选择XPathSelector获取需要捕获的数据,略
        ajaxdata = get_data(data)

        #由于返回可能是js,可以采用python来模拟js解释器,不过这里偷懒就用json来进行转换
        if ajaxdata:
            x = '{"data": "' + ajaxdata.replace('\n', '') + '"}'
            ajaxdata = simplejson.loads(x)['data']
        else:
            ajaxdata = ''
       
        item = response.meta['item']
        item['ajaxdata'] = ajaxdata
        for key in item:
            if isinstance(item[key], unicode):
                item[key] = item[key].encode('utf8')
        #到这里一个Item的全部元素都抓齐了,所以返回item以供保存
        return item
 
分享到:
评论

相关推荐

    PyPI 官网下载 | scrapy_ajax_utils-0.11.tar.gz

    Scrapy_AJAX_Utils 则是针对 Scrapy 进行的特定功能增强,主要关注于 AJAX(Asynchronous JavaScript and XML)技术,它使得网页能够无需刷新页面就能与服务器进行交互,提高了用户体验,但同时也增加了爬虫抓取数据...

    基于Python和Echarts职位画像系统,用Scrapy抓取招聘数据,使用Django+echarts完成数据可视化.zip

    前端页面通过AJAX请求获取这些数据,然后利用Echarts的JavaScript库生成对应的图表。 总的来说,这个项目展示了如何利用Python的Scrapy、Django和Echarts来完成从数据抓取、处理到展示的全过程,对于理解Web开发中...

    通过django创建搜网网站,通过elasticsearch实现动态搜索scrapy抓取的数据.zip

    本项目就是一个典型的实例,它利用Django框架构建了一个搜索网站,同时结合了Elasticsearch来处理Scrapy抓取的数据,实现动态搜索。下面将详细阐述这个项目中的关键知识点。 1. Django框架: Django是一个高级的...

    基于scrapy的百度音乐抓取爬虫

    针对上述方法的问题,可以改进方案,直接从歌手页面获取歌单链接,通过分析歌手页面的Ajax请求来抓取所有歌曲。使用开发者工具(如Firebug)来跟踪歌手页面上的Ajax请求,并模拟这些请求来获取更多的数据。 例如,...

    基于scrapy框架的智联招聘爬虫

    总结起来,本项目中的智联招聘爬虫利用Scrapy框架,结合对Ajax请求的模拟,实现了对网站数据的有效抓取。通过优化策略和处理反爬措施,保证了爬虫的稳定运行,成功爬取了七八万条数据,而没有触发网站的防御机制。这...

    抓取整站网页

    5. **处理JavaScript动态加载**:很多现代网站使用AJAX技术动态加载内容,常规爬虫可能无法抓取。可以使用Headless浏览器(如Puppeteer)或者Selenium来模拟浏览器执行JavaScript。 6. **分页处理**:对于分页的...

    Scrapy-1.5.0 + selenium-3.12.0

    Scrapy和Selenium是Python编程领域中用于网络数据抓取和网页交互的两个重要库。Scrapy是一个功能强大的、开源的爬虫框架,而Selenium则是一个自动化测试工具,但在爬虫领域中常用于处理动态网页和模拟用户交互。下面...

    Web-Scraping-with-Python_Python网页信息抓取_Python抓取网页_jupyter_Python抓

    最后,对于大规模的网页抓取项目,可以考虑使用`Scrapy`框架,它提供了更高级的特性,如多线程、队列管理、中间件等。 总之,Python结合Jupyter为网页抓取提供了高效、便捷的环境。通过学习和实践上述技术,你可以...

    网页抓取例子

    - 动态加载:许多现代网页使用AJAX技术,需要模拟用户交互或使用Selenium等工具抓取数据。 - 反爬机制:网站可能设置验证码、IP限制或User-Agent检查,需要更换代理IP或修改User-Agent字符串。 - 数据清洗与处理...

    抓取动态网页数据

    1. 分析目标网页:使用开发者工具(如Chrome DevTools)分析网页结构,找出动态加载的数据源,可能是API请求或者AJAX调用。 2. 模拟请求:根据分析结果,使用requests库发送HTTP请求,获取JSON或其他格式的数据。 3....

    网页抓取 正则表达式 前台处理json对象

    在前端部分,可能通过AJAX请求获取后端服务的JSON数据,并在页面上进行实时更新和展示。如果涉及到跨域问题,可能需要使用JSONP或CORS来解决。这些都是现代Web开发中不可或缺的技术手段,对于构建动态、交互性强的...

    scrapy框架模拟登陆人人网带状态维持

    在Python的Web爬虫开发中,Scrapy是一个强大而灵活的框架,常用于数据抓取和网页解析。本教程将深入讲解如何使用Scrapy框架来模拟登录人人网,并实现状态维持,以便在抓取过程中保持用户的登录状态。 ### 1. 模拟...

    Python3网络爬虫基础+实战案例 Scrapy、Flask、PySpider、Tushare

    分析Ajax请求并抓取今日头条街拍美图 使用Selenium模拟浏览器抓取淘宝商品美食信息 使用Redis+Flask维护动态代理池 使用代理处理反爬抓取微信文章 使用Redis+Flask维护动态Cookies池 框架篇 PySpider框架基本使用...

    Python爬虫实例——scrapy框架爬取拉勾网招聘信息

    - Spider需要发送AJAX请求到`positionAjax.json`,并解析返回的JSON数据。 - 解析出`positionId`和`showId`,构造详情页URL,并进行下一步的请求或保存数据。 - 为了防止IP被封,可能需要实现IP代理池,定期更换...

    ShopAround:电子商务网站,卖家可以在其中展示他们的产品,客户可以比较其他电子商务网站中的产品,例如flipkart和Amazon使用python库Scrapy抓取它们

    在JavaScript方面,由于许多现代网站使用动态加载技术,尤其是像Flipkart和Amazon这样的大型电商网站,它们的大部分内容可能通过Ajax请求加载。因此,Scrapy可能需要配合 Splash 或 Selenium 这样的工具来处理...

    python爬虫 基于requests模块发起ajax的get请求实现解析

    通过具体的实例,我们将探讨如何获取豆瓣电影分类排行榜中的电影详情数据,其中包括使用抓包工具分析AJAX请求、定制请求头信息、以及处理响应数据。 ### Python爬虫基础 Python爬虫是指使用Python语言编写的程序,...

    scrapy_full_runthrough.pdf

    为了高效地从网页提取数据,Scrapy利用了异步网络框架Twisted,这允许Scrapy以非阻塞的方式处理网络请求和响应。这使得Scrapy能够同时处理大量的并发请求,极大提升了爬虫的性能。 在进行大规模的数据爬取项目时,...

    猎聘采集scrapy源码

    2. **动态加载处理**:现代网页大量使用JavaScript动态加载内容,源码可能包含处理如AJAX请求的方法,以获取完整信息。 3. **反反爬策略**:为了防止被网站封禁,源码可能包含了一些反反爬策略,比如设置User-Agent...

Global site tag (gtag.js) - Google Analytics