安装scrapy
不同操作系统安装操作不同,可以直接看官方文档Install Scrapy
创建一个项目在命令行输入
scrapy startproject tutorial
进入项目目录创建一个spider
cd tutorial scrapy genspider quotes domain.com
import scrapy
class QuotesSpider(scrapy.Spider):
name = "quotes"
def start_requests(self):
urls = [
"http://quotes.toscrape.com/page/1/",
"http://quotes.toscrape.com/page/2/",
]
for url in urls:
yield scrapy.Request(url=url, callback=self.parse)
def parse(self, response):
page = response.url.split("/")[-2]
filename = "quotes-%s.html" % page
with open(filename, "wb") as f:
f.write(response.body)
self.log("Saved file %s" % filename)
运行scrapy,在项目顶级目录下输入命令
scrapy crawl quotes
在QuotesSpider这个类里,name指明spider的名称,在start_requests函数里发出请求,用parse函数处理请求返回的结果,start_requests函数可以替换为start_urls列表,scrapy会自动帮我们发出请求,并默认用parse函数处理,还可以设置一些其它参数,详见Document
选择器用法scrapy内置css选择器和xpath选择器,当然你也可以选择使用其他的解析库,比如BeautifulSoup,我们简单用scrapy shell展示一下scrapy内置选择器的用法,在命令行中输入
scrapy shell https://docs.scrapy.org/en/latest/_static/selectors-sample1.html
示例代码
Example website
# 获取标题
# selector可以去掉
# extract返回的是列表
response.selector.xpath("//title/text()").extract_first()
response.selector.css("title::text").extract_first()
# 获取a标签里href参数内容
response.xpath("//a/@href").extract()
response.css("a::attr(href)").extract()
# 混合获取img标签的src属性
response.xpath("//div[@id="images"]").css("img::attr(src)").extract()
# 获取a标签中包含image的href属性
response.xpath("//a[contains(@href, "image")]/@href").extract()
response.css("a[href*=image]::attr(href)").extract()
# 使用正则表达式
response.css("a::text").re("Name:(.*)")
response.css("a::text").re_first("Name:(.*)")
# 添加default参数指定默认提取信息
response.css("aa").extract_first(default="")
Item Pipeline用法
通过parse处理函数返回的Item可以用Item Pipeline进行加工处理,主要是数据清洗,格式化。
# 过滤掉相同的item
class DuplicatePipeline(object):
def __init__(self):
self.items = set()
def process_item(self, item, spider):
if item["id"] in self.items:
raise DropItem("Duplicate item found: %s" % item["id"])
else:
self.items.add(item["id"])
return item
需要在settings里的注册一下自定义的Pipeline
ITEM_PIPELINES = {
"tutorial.pipelines.TutorialPipeline": 300,
"tutorial.pipelines.DuplicatePipeline": 200,
}
数字越小,优先级越高
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/43235.html
摘要:楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,。本文来源知乎作者路人甲链接楚江数据提供网站数据采集和爬虫软件定制开发服务,服务范围涵盖社交网络电子商务分类信息学术研究等。 楚江数据是专业的互联网数据技术服务,现整理出零基础如何学爬虫技术以供学习,http://www.chujiangdata.com。 第一:Python爬虫学习系列教程(来源于某博主:htt...
摘要:爬虫是我接触计算机编程的入门。练练练本文推荐的资源就是以项目练习带动爬虫学习,囊括了大部分爬虫工程师要求的知识点。拓展阅读一文了解爬虫与反爬虫最后,请注意,爬虫的工作机会相对较少。 爬虫是我接触计算机编程的入门。哥当年写第一行代码的时候别提有多痛苦。 本文旨在用一篇文章说透爬虫如何自学可以达到找工作的要求。 爬虫的学习就是跟着实际项目去学,每个项目会涉及到不同的知识点,项目做多了,自然...
摘要:下面代码会存在什么问题,如何改进一行代码输出之间的所有偶数。简述进程之间如何通信多路复用的作用模型的区别什么是并发和并行解释什么是异步非阻塞的作用面试题说说你知道的命令如何查看某次提交修改的内容答案扫码下面的二维码订阅即可获取。 引言 最近在刷面试题,所以需要看大量的 Python 相关的面试题,从大量的题目中总结了很多的知识,同时也对一些题目进行拓展了,但是在看了网上的大部分面试题不...
摘要:是最有名的爬虫框架之一,可以很方便的进行抓取,并且提供了很强的定制型,这里记录简单学习的过程和在实际应用中会遇到的一些常见问题一安装在安装之前有一些依赖需要安装,否则可能会安装失败,的选择器依赖于,还有网络引擎,下面是下安装的过程下安装安装 scrapy是python最有名的爬虫框架之一,可以很方便的进行web抓取,并且提供了很强的定制型,这里记录简单学习的过程和在实际应用中会遇到的一...
阅读 1430·2021-11-08 13:25
阅读 1977·2021-10-13 09:40
阅读 2924·2021-09-28 09:35
阅读 1426·2021-09-23 11:54
阅读 1381·2021-09-02 15:11
阅读 2667·2019-08-30 13:18
阅读 2037·2019-08-30 12:51
阅读 2862·2019-08-29 18:39