专栏名称: 架构文摘
每天一篇架构领域重磅好文,涉及一线互联网公司的互联网应用架构、大数据、机器学习等各个热门领域。
目录
相关文章推荐
美团技术团队  ·  北斗计划 | 美团核心本地商业大模型全年招聘 ·  3 天前  
美团技术团队  ·  无需代码!美团 NoCode ... ·  3 天前  
美团技术团队  ·  可信实验白皮书系列05:准实验 ·  3 天前  
51好读  ›  专栏  ›  架构文摘

爬虫平台的架构实现和框架的选型

架构文摘  · 公众号  · 架构  · 2019-08-15 09:00

正文

请到「今天看啥」查看全文


import scrapy from scrapy.http import HtmlResponse from zj_scrapy.items import ZjScrapyItem class SjqqSpider(scrapy.Spider): name = 'sjqq' allowed_domains = ['sj.qq.com'] start_urls = ['https://sj.qq.com/myapp/category.htm?orgame=1&categoryId=114'] def parse(self, response:HtmlResponse): name_list = response.xpath('/html/body/div[3]/div[2]/ul/li') print("=============",response.headers) for each in name_list: item = ZjScrapyItem() name = each.xpath('./div/div/a[1]/text()').extract() item['name'] = name[0] yield item pass


关于这段代码的解释如下:



3、 pipeline文件编写
pipeline文件一般用于对处理好的爬虫结果数据做处理,可以入到数据库中,也可以生成到指定的文件中,process_item 方法就是对数据做处理的。
另外pipeline 还包含了__init__和close_spider 两个方法。 __init__ 用于做初始化处理。 close_spider 用于执行结束时的操作处理。 比如数据写入数据库或者文件后,对数据库做链接关闭或者文件流做关闭操作等。
# -*- coding: utf-8 -*- # Define your item pipelines here## Don't forget to add your pipeline to the ITEM_PIPELINES setting# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html class ZjScrapyPipeline(object):def process_item(self, item, spider): print("+++++++++++++++++++",item['name']) print("-------------------",spider.cc)return item

4、 setting文件修改
setting文件中存放的是爬虫的配置,常用的配置一般可以包括
1)、ITEM_PIPELINES的配置,比如:
ITEM_PIPELINES = {
'zj_scrapy.pipelines.ZjScrapyPipeline': 300,
}


这里的300代表了一个优先级,数值范围一般在0-1000,这个数值确定了运行的顺序,数字越小,优先级越高。
2)、字符集配置,可以通过FEED_EXPORT_ENCODING指定字符集:
FEED_EXPORT_ENCODING = 'utf-8'



3)、CONCURRENT_REQUESTS配置Scrapy执行的最大并发请求数
# Configure maximum concurrent requests performed by Scrapy (default: 16)
CONCURRENT_REQUESTS = 32


4)配置请求的header,可以通过DEFAULT_REQUEST_HEADERS来进行配置
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}

5、 本地执行爬虫
在上面的都做完后,可以通过执行命令行scrapy crawl sjqq -o items.csv 来在本地运行爬虫,sjqq 就是前面指定的爬虫名,-o items.csv 表示生成一个csv文件。


运行完成后,可以看到爬取的内容已经写到了指定的文件中。
在运行时,可以通过-a 指定自定义的参数,比如scrapy crawl sjqq -o items.csv -a cc=scrapttest  在这条执行命令中,我们指定了一个cc参数等于scrapttest,在Pipeline  中,我们可以通过代码获取这个参数
class ZjScrapyPipeline(object):def process_item(self, item, spider): print("+++++++++++++++++++",item['name'])






请到「今天看啥」查看全文