摘要:
1.尽量减少请求次数,能抓列表页就不抓详情页,减轻服务器压力,程序员都是混口饭吃不容易。 2.不要只看 Web 网站,还有手机 App 和 H5,这样的反爬虫措施一般比较少。 3.实际应用时候,一般防守方做到根据 IP 限制频次就结束了,除非很核心的数据,不会再进行更多的验证,毕竟成本的问题会考虑到 阅读全文
posted @ 2017-06-09 14:03
hcw_19
阅读(367)
评论(0)
推荐(0)
摘要:
数据爬回来了,但是放在Redis里没有处理。之前我们配置文件里面没有定制自己的ITEM_PIPELINES,而是使用了RedisPipeline,所以现在这些数据都被保存在redis的xx:items键中,所以我们需要另外做处理。 在目录下可以看到一个process_items.py文件,这个文件就 阅读全文
posted @ 2017-06-09 13:47
hcw_19
阅读(1679)
评论(0)
推荐(0)
摘要:
这个RedisCrawlSpider类爬虫继承了RedisCrawlSpider,能够支持分布式的抓取。因为采用的是crawlSpider,所以需要遵守Rule规则,以及callback不能写parse()方法。 同样也不再有start_urls了,取而代之的是redis_key,scrapy-re 阅读全文
posted @ 2017-06-09 13:37
hcw_19
阅读(4048)
评论(0)
推荐(0)
摘要:
Scrapy-Redis分布式策略: 假设有四台电脑:Windows 10、Mac OS X、Ubuntu 16.04、CentOS 7.2,任意一台电脑都可以作为 Master端 或 Slaver端,比如: Master端(核心服务器) :使用 Windows 10,搭建一个Redis数据库,不负 阅读全文
posted @ 2017-06-09 13:33
hcw_19
阅读(530)
评论(0)
推荐(0)
摘要:
Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础的组件(仅有组件)。 pip install scrapy-redis Scrapy-redis提供 阅读全文
posted @ 2017-06-09 13:30
hcw_19
阅读(2398)
评论(1)
推荐(0)
摘要:
在项目根目录下新建main.py文件,用于调试 阅读全文
posted @ 2017-06-09 13:26
hcw_19
阅读(225)
评论(0)
推荐(0)
摘要:
注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENABLED = False 策略一:直接POST数据(比如需要登陆的账户信息) 策略二:标准的模拟登陆 阅读全文
posted @ 2017-06-09 12:30
hcw_19
阅读(585)
评论(0)
推荐(0)
摘要:
1. 创建middlewares.py文件。 Scrapy代理IP、Uesr-Agent的切换都是通过DOWNLOADER_MIDDLEWARES进行控制,我们在settings.py同级目录下创建middlewares.py文件,包装所有请求。 2. 修改settings.py配置USER_AGE 阅读全文
posted @ 2017-06-09 12:15
hcw_19
阅读(1907)
评论(0)
推荐(1)
摘要:
动态设置User-Agent(随机切换User-Agent,模拟不同用户的浏览器信息) 禁用Cookies(也就是不启用cookies middleware,不向Server发送cookies,有些网站通过cookie的使用发现爬虫行为)(可以通过COOKIES_ENABLED 控制 Cookies 阅读全文
posted @ 2017-06-09 12:05
hcw_19
阅读(995)
评论(0)
推荐(0)
摘要:
通常网站通过 实现对某些表单字段(如数据或是登录界面中的认证令牌等)的预填充 使用Scrapy抓取网页时,如果想要预填充或重写像用户名、用户密码这些表单字段, 可以使用 FormRequest.from_response() 方法实现。 下面是使用这种方法的爬虫例子: 阅读全文
posted @ 2017-06-09 11:50
hcw_19
阅读(7761)
评论(1)
推荐(1)
摘要:
可以使用 yield scrapy.FormRequest(url, formdata, callback)方法发送POST请求。 如果希望程序执行一开始就发送POST请求,可以重写Spider类的start_requests(self) 方法,并且不再调用start_urls里的url。 可以使用 阅读全文
posted @ 2017-06-09 11:37
hcw_19
阅读(14046)
评论(0)
推荐(0)
摘要:
import scrapyfrom scrapy.spider import CrawlSpider,Rulefrom scrapy.linkextractors import LinkExtractorfrom tencent.items import TencentItemclass Tence 阅读全文
posted @ 2017-06-09 11:36
hcw_19
阅读(474)
评论(0)
推荐(0)
摘要:
通过下面的命令可以快速创建 CrawlSpider模板 的代码: scrapy genspider -t crawl spidername xx.com LinkExtractors Link Extractors 的目的很简单: 提取链接。 每个LinkExtractor有唯一的公共方法是 ext 阅读全文
posted @ 2017-06-09 11:26
hcw_19
阅读(575)
评论(0)
推荐(0)
摘要:
修改配置文件settings.py,任意位置添加 Log levels Scrapy提供5层logging级别: CRITICAL - 严重错误(critical) ERROR - 一般错误(regular errors) WARNING - 警告信息(warning messages) INFO 阅读全文
posted @ 2017-06-09 11:22
hcw_19
阅读(270)
评论(0)
推荐(0)
摘要:
pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(host='localhost,user='',passwd='',db='',charset='utf8 阅读全文
posted @ 2017-06-09 11:11
hcw_19
阅读(2013)
评论(0)
推荐(0)
摘要:
1.因为使用的yield,而不是return。parse函数将会被当做一个生成器使用。scrapy会逐一获取parse方法中生成的结果,并判断该结果是一个什么样的类型; 2.如果是request则加入爬取队列,如果是item类型则使用pipeline处理,其他类型则返回错误信息。 3.scrapy取 阅读全文
posted @ 2017-06-09 10:54
hcw_19
阅读(754)
评论(0)
推荐(0)
摘要:
需要在settings.py配置: 阅读全文
posted @ 2017-06-09 10:46
hcw_19
阅读(282)
评论(0)
推荐(0)
摘要:
pipelines.py import json class xxPipeline(object): def __init__(self): self.filename=open("xx.json","wb") def process_item(self, item, spider): jsonte 阅读全文
posted @ 2017-06-09 10:38
hcw_19
阅读(5297)
评论(0)
推荐(0)
摘要:
1.新建项目 (scrapy startproject xxx):新建一个新的爬虫项目 2.明确目标 (编写items.py):明确你想要抓取的目标 3.制作爬虫 (spiders/xxspider.py):制作爬虫开始爬取网页 4.存储内容 (pipelines.py):设计管道存储爬取内容 阅读全文
posted @ 2017-06-09 10:11
hcw_19
阅读(303)
评论(0)
推荐(0)

浙公网安备 33010602011771号