python Scrapy框架原理解析
作者:划水De雁晓明 时间:2022-08-07 06:17:20
Python 爬虫包含两个重要的部分:正则表达式和Scrapy框架的运用, 正则表达式对于所有语言都是通用的,网络上可以找到各种资源。
如下是手绘Scrapy框架原理图,帮助理解
如下是一段运用Scrapy创建的spider:使用了内置的crawl模板,以利用Scrapy库的CrawlSpider。相对于简单的爬取爬虫来说,Scrapy的CrawlSpider拥有一些网络爬取时可用的特殊属性和方法:
$ scrapy genspider country_or_district example.python-scrapying.com--template=crawl
运行genspider命令后,下面的代码将会在example/spiders/country_or_district.py中自动生成。
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from example.items import CountryOrDistrictItem
class CountryOrDistrictSpider(CrawlSpider):
name = 'country_or_district'
allowed_domains = ['example.python-scraping.com']
start_urls = ['http://example.python-scraping.com/']
rules = (
Rule(LinkExtractor(allow=r'/index/', deny=r'/user/'),
follow=True),
Rule(LinkExtractor(allow=r'/view/', deny=r'/user/'),
callback='parse_item'),
)
def parse_item(self, response):
item = CountryOrDistrictItem()
name_css = 'tr#places_country_or_district__row td.w2p_fw::text'
item['name'] = response.css(name_css).extract()
pop_xpath = '//tr[@id="places_population__row"]/td[@class="w2p_fw"]/text()'
item['population'] = response.xpath(pop_xpath).extract()
return item
爬虫类包括的属性:
name: 识别爬虫的字符串。
allowed_domains: 可以爬取的域名列表。如果没有设置该属性,则表示可以爬取任何域名。
start_urls: 爬虫起始URL列表。
rules: 该属性为一个通过正则表达式定义的Rule对象元组,用于告知爬虫需要跟踪哪些链接以及哪些链接包含抓取的有用内容。
来源:https://www.cnblogs.com/yxmings/p/14226696.html
标签:python,Scrapy,框架
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Python3.x和Python2.x的区别介绍
2022-01-05 12:36:27
python基础之迭代器与生成器
2022-02-20 07:07:54
PHP获取当前相对于域名目录的方法
2023-08-19 18:47:31
详解TensorFlow在windows上安装与简单示例
2021-06-01 23:54:31
![](https://img.aspxhome.com/file/2023/2/95542_0s.png)
在select语句中使用top的一些小技巧
2009-03-12 12:21:00
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2021-11-17 02:14:33
![](https://img.aspxhome.com/file/2023/3/72183_0s.jpg)
在Python中操作文件之read()方法的使用教程
2021-10-28 19:23:46
Python编程把二叉树打印成多行代码
2023-06-24 15:12:57
使用MHTML 解决 data URI scheme 的浏览器兼容问题
2009-05-11 12:30:00
PyTorch中的神经网络 Mnist 分类任务
2023-04-07 00:34:49
![](https://img.aspxhome.com/file/2023/4/101294_0s.png)
python实现Excel文件转换为TXT文件
2021-01-15 05:24:54
对pyqt5之menu和action的使用详解
2022-03-12 23:00:37
Python pyecharts模块安装与入门教程
2023-09-11 06:52:41
![](https://img.aspxhome.com/file/2023/3/118653_0s.png)
python 用opencv调用训练好的模型进行识别的方法
2022-11-14 11:57:23
Python使用pandas对数据进行差分运算的方法
2021-09-28 06:56:07
MYSQL数据库常用命令集合
2009-02-26 16:01:00
基于python批量处理dat文件及科学计算方法详解
2021-05-16 18:00:12
![](https://img.aspxhome.com/file/2023/5/99135_0s.jpg)
Python def函数的定义、使用及参数传递实现代码
2023-02-23 04:54:34
Python处理JSON时的值报错及编码报错的两则解决实录
2023-11-10 07:12:07
垂直栅格与渐进式行距(下)
2009-07-09 16:52:00