标签:模型 pytho false 载器 特定 一个 window pid loader
为了爬取网站数据而编写的一款应用框架,所谓的框架其实就是一个集成了相应的功能且具有很强通用性的项目模板
该框架提供了高性能的异步下载,解析和持久化等功能
linux or max os :
pip install scrapy
windows:
pip install wheel 下载 twisted框架:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted 下载好后安装:pip insta 下载的框架.whl pip install pywin32 pip install scrapy
目录结构:
project_name/ scrapy.cfg: project_name/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py
scrapy.cfg 项目的主配置信息。(真正爬虫相关的配置信息在settings.py文件中)
items.py 设置数据存储模板,用于结构化数据,如:Django的Model
pipelines 数据持久化处理
settings.py 配置文件,如:递归的层数、并发数,延迟下载等
spiders 爬虫目录,如:创建文件,编写爬虫解析规则
cd 工程目录
执行scrapy genspider 爬虫文件的名称 起始url
文件内容:
# -*- coding: utf-8 -*- import scrapy class FirstSpider(scrapy.Spider): # 爬虫文件的名称: 可以通过爬虫文件的名称可以指定的定位到某一个具体的爬虫文件 name = ‘first‘ # 允许的域名: 只可以爬取指定域名下的页面数据 allowed_domains = [‘www.qiushibaike.com‘] # 起始url:当前工程要爬取的页面所对应的url start_urls = [‘http://www.qiushibaike.com/‘] # 解析方法:对获取的页面数据进行指定内容的解析 # response:根据起始url列表发起请求,请求成功后返回的响应对象 # parse方法的返回值:必须为迭代器或者空 def parse(self, response): print(response.text) # 获取响应对象的页面数据
所需更改的配置:
# Obey robots.txt rules ROBOTSTXT_OBEY = False # 改成False # 对请求载体的身份进行伪装 USER_AGENT = ‘Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36‘
scrapy crawl 爬虫文件的名称
Scrapy主要包括了以下组件:
Scrapy运行流程大概如下:
需求:爬取糗事百科中段子的内容和作者
class QiubaiSpider(scrapy.Spider): name = ‘qiubai‘ # allowed_domains = [‘www.qiushibaike.com/text‘] start_urls = [‘https://www.qiushibaike.com/text/‘] def parse(self, response): # 建议使用xpath进行解析(框架集成了xpath解析的接口) div_list = response.xpath(‘//div[@id="content-left"]/div ‘) for div in div_list: # xpath解析到的指定内容存储到了Selector对象 # extract()该方法可以将Selector对象存储中存储的数据值拿到 author = div.xpath(‘./div/a[2]/h2/text()‘).extract_first() # extract_first = extract()[0] content = div.xpath(‘.//div[@class="content"]/span/text()‘).extract_first() print(author) print(content)
标签:模型 pytho false 载器 特定 一个 window pid loader
原文地址:https://www.cnblogs.com/harryblog/p/11350412.html