自定义 Scrapy 爬虫请求的 URL
2016-12-24 14:02
399 查看
之前使用 scrapy 抓取数据的时候 ,默认是在逻辑中判断是否执行下一次请求
比如:
今天无意查看了 scrapy 的官方文档,可以使用 start_requests() 这个方法循环生成要爬取的网址
使用 python 一定要简单粗暴,于是把我把之前代码换了如下方式
注意:要注意的是重写 start_requests 这个方法,则不需要设置
REFER: http://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests python爬虫----(scrapy框架提高(1),自定义Request爬取) https://my.oschina.net/lpe234/blog/342741
def parse(self): # 获取所有的url,例如获取到urls中 for url in urls: yield Request(url)
比如:
def parse(self,response): item = MovieItem() selector = Selector(response) Movies = selector.xpath('//div[@class="info"]') for eachMoive in Movies: title = eachMoive.xpath('div[@class="hd"]/a/span/text()').extract() star = eachMoive.xpath('div[@class="bd"]/div[@class="star"]/span/em/text()').extract()[0] quote = eachMoive.xpath('div[@class="bd"]/p[@class="quote"]/span/text()').extract() nextLink = selector.xpath('//span[@class="next"]/link/@href').extract() #下一页 if nextLink: nextLink = nextLink[0] yield Request(self.url + nextLink,callback=self.parse)
今天无意查看了 scrapy 的官方文档,可以使用 start_requests() 这个方法循环生成要爬取的网址
def start_requests(self): urls=[] for i in range(1,10): url='http://www.test.com/?page=%s'%i page=scrapy.Request(url) urls.append(page) return urls
使用 python 一定要简单粗暴,于是把我把之前代码换了如下方式
# 开始URL start_urls= [ "http://q.stock.sohu.com" ] #定义爬取的URL def start_requests(self): # 按日 return [Request(("http://q.stock.sohu.com/hisHq?code=cn_{0}"+"&start=" + self.begin_date + "&end=" + self.end_date + "&stat=1&order=D&period=d&rt=json&r=0.6618998353094041&0.8423532517054869").format(x['code'])) for x in self.stock_basics]
注意:要注意的是重写 start_requests 这个方法,则不需要设置
start_urls了,并且写了
start_urls也没有用
This method must return an iterable with the first Requests to crawl for this spider. This is the method called by Scrapy when the spider is opened for scraping when no particular URLs are specified. If particular URLs are specified, the make_requests_from_url() is used instead to create the Requests. This method is also called only once from Scrapy, so it’s safe to implement it as a generator. The default implementation uses make_requests_from_url() to generate Requests for each url in start_urls.
REFER: http://doc.scrapy.org/en/latest/topics/spiders.html#scrapy.spiders.Spider.start_requests python爬虫----(scrapy框架提高(1),自定义Request爬取) https://my.oschina.net/lpe234/blog/342741
相关文章推荐
- asp.net 自定义 Http Post,Get,WebClient ,TcpClient 请求url地址
- Python爬虫基础(一)--简单的url请求
- scrapy_cookie禁用_延迟下载_自定义爬虫setting
- python爬虫之请求(url)构造 —— 寻找参数来源以及中文编码
- scrapy 爬虫过滤相同的url,Filtered duplicate request,dont_filter
- Scrapy爬虫教程之URL解析与递归爬取
- 转自网易云课堂scrapy爬虫--------请求方式爬虫
- 第三百二十六节,web爬虫,scrapy模块,解决重复ur——自动递归url
- Python 爬虫 URL中存在中文或特殊符号无法请求的解决方法
- Scrapy爬虫框架之使用第三方库fake_useragent实现随机请求头
- (转)python爬虫----(scrapy框架提高(1),自定义Request爬取)
- scrapy爬虫第一阶段——爬取多级url
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- Scrapy爬虫(二)——自定义Item和代理访问的爬虫
- Scrapy爬虫入门教程十一 Request和Response(请求和响应)
- 同时运行多个scrapy爬虫的几种方法(自定义scrapy项目命令)
- 第三百五十节,Python分布式爬虫打造搜索引擎Scrapy精讲—selenium模块是一个python操作浏览器软件的一个模块,可以实现js动态网页请求
- Java_web项目,URL请求地址中项目名设置为自定义变量
- 第三百四十九节,Python分布式爬虫打造搜索引擎Scrapy精讲—cookie禁用、自动限速、自定义spider的settings,对抗反爬机制
- Scrapy爬虫系列笔记之三:正则表达式,url去重策略以及遍历算法_by_书訢