Python爬虫框架Scrapy基本用法入门教程
作者:喷跑的豆子 发布时间:2021-08-17 19:50:45
标签:Python,爬虫框架,Scrapy
本文实例讲述了Python爬虫框架Scrapy基本用法。分享给大家供大家参考,具体如下:
Xpath
<html>
<head>
<title>标题</title>
</head>
<body>
<h2>二级标题</h2>
<p>爬虫1</p>
<p>爬虫2</p>
</body>
</html>
在上述html代码中,我要获取h2的内容,我们可以使用以下代码进行获取:
info = response.xpath("/html/body/h2/text()")
可以看出/html/body/h2为内容的层次结构,text()
则是获取h2标签的内容。//p
获取所有p标签。获取带具体属性的标签://标签[@属性="属性值"]
<div class="hide"></div>
获取class为hide的div标签
div[@class="hide"]
再比如,我们在谷歌Chrome浏览器上的Console界面使用$x['//h2']
命令获取页面中的h2元素信息:
xmlfeed模板
创建一个xmlfeed模板的爬虫
scrapy genspider -t xmlfeed abc iqianyue.com
核心代码:
from scrapy.spiders import XMLFeedSpider
class AbcSpider(XMLFeedSpider):
name = 'abc'
start_urls = ['http://yum.iqianyue.com/weisuenbook/pyspd/part12/test.xml']
iterator = 'iternodes' # 迭代器,默认为iternodes,是一个基于正则表达式的高性能迭代器。除了iternodes,还有“html”和“xml”
itertag = 'person' # 设置从哪个节点(标签)开始迭代
# parse_node会在节点与提供的标签名相符时自动调用
def parse_node(self, response, selector):
i = {}
xpath = "/person/email/text()"
info = selector.xpath(xpath).extract()
print(info)
return i
csvfeed模板
创建一个csvfeed模板的爬虫
scrapy genspider -t csvfeed csvspider iqianyue.com
核心代码
from scrapy.spiders import CSVFeedSpider
class CsvspiderSpider(CSVFeedSpider):
name = 'csvspider'
allowed_domains = ['iqianyue.com']
start_urls = ['http://yum.iqianyue.com/weisuenbook/pyspd/part12/mydata.csv']
# headers 主要存放csv文件中包含的用于提取字段的信息列表
headers = ['name', 'sex', 'addr', 'email']
# delimiter 字段之间的间隔
delimiter = ','
def parse_row(self, response, row):
i = {}
name = row["name"]
sex = row["sex"]
addr = row["addr"]
email = row["email"]
print(name,sex,addr,email)
#i['url'] = row['url']
#i['name'] = row['name']
#i['description'] = row['description']
return i
crawlfeed模板
创建一个crawlfeed模板的爬虫
scrapy genspider -t crawlfeed crawlspider sohu.com
核心代码
class CrawlspiderSpider(CrawlSpider):
name = 'crawlspider'
allowed_domains = ['sohu.com']
start_urls = ['http://sohu.com/']
rules = (
Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
i = {}
#i['domain_id'] = response.xpath('//input[@id="sid"]/@value').extract()
#i['name'] = response.xpath('//div[@id="name"]').extract()
#i['description'] = response.xpath('//div[@id="description"]').extract()
return i
上面代码rules部分中的LinkExtractor为连接提取器。
LinkExtractor中对应的参数及含义
参数名 | 参数含义 |
---|---|
allow | 提取符合正则表达式的链接 |
deny | 不提取符合正则表达式的链接 |
restrict_xpaths | 使用XPath表达式与allow共同作用提取同时符合对应XPath表达式和对应正则表达式的链接 |
allow_domains | 允许提取的域名,比如我们想只提取某个域名下的链接时会用到 |
deny_domains | 进制提取的域名 |
希望本文所述对大家Python程序设计有所帮助。
来源:https://blog.csdn.net/y472360651/article/details/75194626
0
投稿
猜你喜欢
- DateDiff 函数描述 返回两个日期之间的时间间隔。 语法 DateDiff(interval, date1, date2 [,firs
- 代码如下:<script type=text/javascript src=http://fw.qq.com/ipaddress>
- 网站开发时经常需要在某个页面需要实现对大量图片的浏览,如果考虑流量的话,大可以像pconline一样每个页面只显示一张图片,让用户每看一张图
- 之前看到过很多头条,说哪国某人坚持了多少年自学使用excel画画,效果十分惊艳。 对于他们的耐心我十分敬佩。 但是作为一个程序员,自然也得挑
- Numpy是什么很简单,Numpy是Python的一个科学计算的库,提供了矩阵运算的功能,其一般与Scipy、matplotlib一起使用。
- 穿过云朵升一级是要花6个金币的,有的时候金币真的很重要前言嗨喽,大家好呀!这里是魔王~一天晚上,天空中掉下一颗神奇的豌豆种子,正好落在了梦之
- 前言本文提供将图片分辨率调整的python代码,一如既往的实用主义。环境依赖ffmpeg环境安装,可以参考:windows ffmpeg安装
- 在使用Ajax过程中,有时候总会遇到一些难题,浏览器兼容、编码、IE下的特殊处理等等,偶尔会搞的人头昏脑胀哭笑不得,这里列一些小贴士,或许有
- session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessio
- 当你在IE中点击一个Realplayer连接时,系统会自动启动Realplayer软件,不仅占用系统内存,而且在上网时Realplayer容
- import matplotlib.pyplot as pltimport jiebafrom wordcloud import wordc
- 本文实例讲述了Python闭包实现计数器的方法。分享给大家供大家参考。具体实现方法如下:先来看看专业的解释:闭包(Closure)是词法闭包
- 在今天的设计中,排版常常被忽视,特别是被网页设计师忽视。这真是件遗憾的事情因为CSS可以做很多事情来控制我们的排版。也就是说,我们被局限于某
- 导语:Python如何下载网页上的图片呢?今天小编给大家分享另一个Python应用小程序,就是:用Python控制摄像头录制视频!学会了也可
- 这篇文章主要介绍了IOS苹果AppStore内购付款的服务器端php验证方法(使用thinkphp)。AppStore内购在app中支付的过
- 1、通过探测Flash Player的版本,来决定显示Flash内容还是替换内容,避免了过时的Flash插件影响Flash内容的正常显示。2
- 引言委托 和 事件在 .Net Framework中的应用非常广泛,然而,较好地理解委托和事件对很多接触C#时间不长的人来说并不容易。它们就
- 说明本文根据https://github.com/liuchengxu/blockchain-tutorial 的内容,用python实现的
- python中内置的max()函数用来得到最大值,通过冒泡排序也可以。#!/usr/bin/pythondef getMax(arr): &
- 朋友的网站要计算机票的折扣价格,并且在最后的折扣价格上应对个位进行四舍五入,同时在ASP和Javasc