scrapy

Extend a Scrapy ItemLoader with custom methods

点点圈 提交于 2020-04-30 13:55:13
问题 The Scrapy documentation lists all the built-in methods of ItemLoader instances and explains how to declare your own Item Loaders. However, any ItemLoaders you declare will apply to all processed items. You can modify their behavior a little with Item Loader Contexts, but this is frequently not granular enough. Suppose I have a Scrapy project where the spiders and items all inherit the same base spider and item loaders, but the spiders all contain site-specific logic with a handful of common

Getting “Crawled 324 pages (at 133 pages/min), scraped 304 items (at 130 items/min)” after paginating 18 pages while there are 42 pages to scrap?

女生的网名这么多〃 提交于 2020-04-30 10:43:52
问题 While I have written a script to scrape data from the site and it is working ideally but after scraping about 18 pages' data(as there are about 42 pages), the scrapy get stuck by giving a log info after and after. I visited the similar questions answered on stackoverflow but in all of them the scripts were not working from the beginning while in my case the script scraped data from about 18 pages and then get stuck. Here is the script # -*- coding: utf-8 -*- import scrapy import logging class

Getting “Crawled 324 pages (at 133 pages/min), scraped 304 items (at 130 items/min)” after paginating 18 pages while there are 42 pages to scrap?

老子叫甜甜 提交于 2020-04-30 10:43:14
问题 While I have written a script to scrape data from the site and it is working ideally but after scraping about 18 pages' data(as there are about 42 pages), the scrapy get stuck by giving a log info after and after. I visited the similar questions answered on stackoverflow but in all of them the scripts were not working from the beginning while in my case the script scraped data from about 18 pages and then get stuck. Here is the script # -*- coding: utf-8 -*- import scrapy import logging class

手把手教你使用Python爬取西刺代理数据(下篇)

爱⌒轻易说出口 提交于 2020-04-30 09:38:25
/1 前言/ 前几天小编发布了 手把手教你使用Python爬取西次代理数据(上篇) , 木有赶上车的小伙伴,可以戳进去看看。今天小编带大家进行网页结构的分析以及网页数据的提取,具体步骤如下。 /2 首页分析及提取/ 首先进入网站主页,如下图所示。 简单分析下页面,其中后面的 1 是页码的意思,分析后发现每一页有100 多条数据,然后网站底部总共有 2700+页 的链接,所以总共ip 代理加起来超过 27 万条数据,但是后面的数据大部分都是很多年前的数据了,比如 2012 年,大概就前 5000 多条是最近一个月的,所以决定爬取前面100 页。通 过网站 url 分析,可以知道这 100 页的 url 为: 规律显而易见,在程序中,我们使用一个 for 循环即可完整这个操作: 其中 scrapy 函数是爬取的主要逻辑,对应的代码为: 通过这个方式,我们可以得到每一页的数据。 /3 网页元素分析及提取/ 接下来就是对页面内的元素进行分析,提取其中的代理信息。 如上图,我们目的是进行代理地域分布分析,同时,在爬取过程中需要使用爬取的数据进行代 理更新,所以需要以下几个字段的信息: Ip 地址、端口、服务器位置、类型 为此,先构建一个类,用于保存这些信息: 这样,每爬取一条信息,只要实例化一个 ProxyBean 类即可,非常方便。 接下来就是提取元素过程了,在这个过程我使用了正则表达式和

如何利用Python网络爬虫爬取微信朋友圈动态--附代码(下)

最后都变了- 提交于 2020-04-30 00:41:06
前天给大家分享了如何利用Python网络爬虫爬取微信朋友圈数据的上篇(理论篇),今天给大家分享一下代码实现(实战篇),接着上篇往下继续深入。 一、代码实现 1、修改Scrapy项目中的items.py文件。我们需要获取的数据是朋友圈和发布日期,因此在这里定义好日期和动态两个属性,如下图所示。 2、修改实现爬虫逻辑的主文件moment.py,首先要导入模块,尤其是要主要将items.py中的WeixinMomentItem类导入进来,这点要特别小心别被遗漏了。之后修改start_requests方法,具体的代码实现如下图。 3、修改parse方法,对导航数据包进行解析,代码实现稍微复杂一些,如下图所示。 l需要注意的是从网页中获取的response是bytes类型,需要显示的转为str类型才可以进行解析,否则会报错。 l在POST请求的限定下,需要构造参数,需要特别注意的是参数中的年、月和索引都需要是字符串类型的,否则服务器会返回400状态码,表示请求参数错误,导致程序运行的时候报错。 l在请求参数还需要加入请求头,尤其是Referer(反盗链)务必要加上,否则在重定向的时候找不到网页入口,导致报错。 l上述的代码构造方式并不是唯一的写法,也可以是其他的。 4、定义parse_moment函数,来抽取朋友圈数据,返回的数据以JSON加载的,用JSON去提取数据

如何利用Python网络爬虫抓取微信朋友圈的动态(上)

坚强是说给别人听的谎言 提交于 2020-04-29 21:05:58
今天小编给大家分享一下如何利用Python网络爬虫抓取微信朋友圈的动态信息,实际上如果单独的去爬取朋友圈的话,难度会非常大,因为微信没有提供向网易云音乐这样的API接口,所以很容易找不到门。不过不要慌,小编在网上找到了第三方工具,它可以将朋友圈进行导出,之后便可以像我们正常爬虫网页一样进行抓取信息了。 【出书啦】就提供了这样一种服务,支持朋友圈导出,并排版生成微信书。本文的主要参考资料来源于这篇博文: https://www. cnblogs.com/sheng-jie/p /7776495.html ,感谢大佬提供的接口和思路。具体的教程如下。 一、获取朋友圈数据入口 1、关注公众号【出书啦】 2、之后在主页中点击【创作书籍】-->【微信书】。 3、点击【开始制作】-->【添加随机分配的出书啦小编为好友即可】,长按二维码之后便可以进行添加好友了。 4、之后耐心等待微信书制作,待完成之后,会收到小编发送的消息提醒,如下图所示。 至此,我们已经将微信朋友圈的数据入口搞定了,并且获取了外链。 确保朋友圈设置为【全部开放】,默认就是全部开放,如果不知道怎么设置的话,请自行百度吧。 5、点击该外链,之后进入网页,需要使用微信扫码授权登录。 6、扫码授权之后,就可以进入到微信书网页版了,如下图所示。 7、接下来我们就可以正常的写爬虫程序进行抓取信息了。在这里,小编采用的是Scrapy爬虫框架

新手Python Package安装经验

浪子不回头ぞ 提交于 2020-04-28 10:28:37
windows 64 ,python3.8 安装BeautifulSoup4 pip install BeautifulSoup4 安装Scrapy 先安装Twisted https://www.lfd.uci.edu/~gohlke/pythonlibs/#Twisted 我是64系统,下载了typed_ast‑1.4.1‑cp38‑cp38‑win_amd64.whl,安装的时候报错了,又下载了typed_ast‑1.4.1‑cp38‑cp38‑win32.whl,安装成功了!!下图是两次安装的结果 安装的两天命令行,安装成功,可以开心爬虫去 pip install Twisted-20.3.0-cp38-cp38-win32.whl pip install Scrapy ![](https://oscimg.oschina.net/oscnet/up-64d82c99421793780618b4f0b3f775640f7.png) 来源: oschina 链接: https://my.oschina.net/wuxueshi/blog/4255914

urllib,request 设置代理

六眼飞鱼酱① 提交于 2020-04-27 05:41:06
通常防止爬虫被反主要有以下几个策略: 1.动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息) 2.使用IP地址池:VPN和代理IP,现在大部分网站都是根据IP来ban的。 3.禁用Cookies(也就是不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为) 4.可以通过COOKIES_ENABLED 控制 CookiesMiddleware 开启或关闭 5.设置延迟下载(防止访问过于频繁,设置为 2秒 或更高)要明白爬虫重要的是拿到数据。 6.Google Cache 和 Baidu Cache:如果可能的话,使用谷歌/百度等搜索引擎服务器页面缓存获取页面数据。 7.使用 Crawlera(专用于爬虫的代理组件),正确配置和设置下载中间件后,项目所有的request都是通过crawlera发出。 反爬第一招,动态设置User-Agent: 怎么动态设置?其实就是事先准备一堆User-Agent.每次发送请求时就从中间随机选取一个。有些网站反爬检查user-agent的话就可以骗过去了。 采用 random随机模块的choice方法随机选择User-Agent,这样每次请求都会从中选择,请求很频繁的话就多找几个user-agent。 def load_page(url, form

爬取企查查网站中安徽省内的企业数据信息

孤街浪徒 提交于 2020-04-27 05:38:34
企查查网站中汇聚了有关注册企业的详细信息,为了更好的查询企业相关信息,本人对网站中安徽省境内的企业进行了爬取,其中遇到的问题和使用的技术如下: 1、遇到的问题:   1>企查查PC版数据只显示前500页,为了尽可能最大化爬取网站数据,本次爬取按照市级分别爬取,共计爬取安徽省境内16个市区共计80000条企业信息;   2>在爬取网站数据时,若爬取速度过快,会出现手动验证功能,为了解决手动验证,同时为了避免封号,直接采用随机更换IP代理,IP代理可以在《89免费代理》网站获取免费代理账号,网址为: http://www.89ip.cn/ ,可以一次性获取30个代理IP,如果不够用,     可以多次提取,然后构建代理池,本人试了,该网站的免费代理比西次代理和快代理网站的免费代理要好很多,如下图:      2、使用的技术:   1>请求模块:requests请求,为了避免反爬,采用随机代理,同时使用fake_useragent随机产生user-agent;   2>解析库:使用xpath和正则表达式   3>提速优化:采用多线程,同时对爬取的数据进行一次性保存,避免磁盘频繁IO; 3、核心代码如下:    import requests from lxml import etree from queue import Queue from threading import

Scrapy-Splash爬虫实战——爬取JS渲染的动态页面信息【附货币基金爬取筛选代码】

≡放荡痞女 提交于 2020-04-26 17:44:53
本文概要 展示了一个使用Scrapy爬取网页信息的例子——爬取天天基金网的货币基金 爬取的信息在JS渲染的动态页面中,使用headless浏览器和Splash配合Scrapy解决问题 提供了docker镜像和Dockerfile,详述过程Dockerfile每一行的设置和其中的坑 仔细阅读可以了解Scrapy的基本用法,配合headless浏览器爬取一切疑难页面,在2.0.1版本下很长一段时间不用去和环境死磕了,直接取用docker镜像吧。 代码 qqhard/hj_spider ​ github.com 任务 由天天基金网的 货基列表页 进入详情页 爬取详情页中一系列信息 Scrapy一般流程 Scrapy目前的版本是2.0.1,其官方文档在 https:// scrapy.org/ 需要python3.5及以上的环境,在linux下需要Ubuntu 14.04及以上。 使用pip和conda很容易安装, pip install Scrapy 即可。 Scrapy提供了脚手架, scrapy startproject tutorial 创建项目,获得如下的目录: tutorial / scrapy . cfg # deploy configuration file tutorial / # project's Python module, you'll import your