XPath式
// Xは、次のような、ダウン指定したタグを見つけるために、n層を表し://はすべてのdiv divタグを表現して下さい
/ xが指定されたラベル見下すの層意味
/ @ Xを一緒に置くことができるように、指定された属性の値を表します。 @src @id
[属性名=「属性値が」@]指定された属性のラベルが指定された値に等しい表し、そのようなクラス名タグを見つけることが指定された名前と同じであるように、一緒に置くことができる
ラベルテキストベースのコンテンツを取得し)/テキスト(
インデックスで[X]コレクションの指定した要素を取得します。
XPath式の結果は、通常の一致のためにろ過1、次いでnの最終的なコンテンツを取る
(「正規」)最後.RE
xpath('//div[@class="showlist"]/li//img')[0].re('alt="(\w+)')
図2に示すように、アプリケーション内の選択ルールは、フィルタリングされ
、[RE:正規の規則]
xpath('//div[re:test(@class, "showlist")]').extract()
Scrapyは、実際の使用電力供給業者のウェブサイトの商品タイトル、リンク、およびコメントの数を取得し、
ソース解析
items.pyコンテナファイルの作成の最初のステップ
我々はすでに我々は、その製品のタイトル、リンク、およびコメントを取得する必要があります知っています
items.pyがコンテナの受信データ爬虫類を作成で取得しました
セット爬虫類は、情報コンテナクラスを取得し、クラスがscrapy.Itemを継承しなければなりません
scrapy.Field()メソッドが定義された変数scrapy.Field()情報指定されたフィールド爬虫類を受信する方法
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
# -*- coding: utf-8 -*-
# Define here the models for your scraped items
#
# See documentation in:
# http://doc.scrapy.org/en/latest/topics/items.html
import scrapy
#items.py,文件是专门用于,接收爬虫获取到的数据信息的,就相当于是容器文件
class AdcItem(scrapy.Item): #设置爬虫获取到的信息容器类
# define the fields for your item here like:
# name = scrapy.Field()
title = scrapy.Field() #接收爬虫获取到的title信息
link = scrapy.Field() #接收爬虫获取到的连接信息
comment = scrapy.Field() #接收爬虫获取到的商品评论数
第二段階、爬虫類ファイル書かpach.py
爬虫類の定義は、scrapy.Spiderを継承しなければなりません
name设置爬虫名称
allowed_domains设置爬取域名
start_urls设置爬取网址
parse(response)爬虫回调函数,接收response,response里是获取到的html数据对象
xpath()过滤器,参数是xpath表达式
extract()获取html数据对象里的数据
yield item 接收了数据的容器对象,返回给pipelies.py
# -*- coding: utf-8 -*-
import scrapy
from adc.items import AdcItem #导入items.py里的AdcItem类,容器类
class PachSpider(scrapy.Spider): #定义爬虫类,必须继承scrapy.Spider
name = 'pach' #设置爬虫名称
allowed_domains = ['search.dangdang.com'] #爬取域名
start_urls = ['http://category.dangdang.com/pg1-cid4008149.html'] #爬取网址
def parse(self, response): #parse回调函数
item = AdcItem() #实例化容器对象
item['title'] = response.xpath('//p[@class="name"]/a/text()').extract() #表达式过滤获取到数据赋值给,容器类里的title变量
# print(rqi['title'])
item['link'] = response.xpath('//p[@class="name"]/a/@href').extract() #表达式过滤获取到数据赋值给,容器类里的link变量
# print(rqi['link'])
item['comment'] = response.xpath('//p[@class="star"]//a/text()').extract() #表达式过滤获取到数据赋值给,容器类里的comment变量
# print(rqi['comment'])
yield item #接收了数据的容器对象,返回给pipelies.py
robots协议
注意:如果获取的网站在robots.txt文件里设置了,禁止爬虫爬取协议,那么将无法爬取,因为scrapy默认是遵守这个robots这个国际协议的,如果想不遵守这个协议,需要在settings.py设置
到settings.py文件里找到ROBOTSTXT_OBEY变量,这个变量等于False不遵守robots协议,等于True遵守robots协议
# Obey robots.txt rules
ROBOTSTXT_OBEY = False #不遵循robots协议
第三步、编写pipelines.py数据处理文件
如果需要pipelines.py里的数据处理类能工作,需在settings.py设置文件里的ITEM_PIPELINES变量里注册数据处理类
# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {
'adc.pipelines.AdcPipeline': 300, #注册adc.pipelines.AdcPipeline类,后面一个数字参数表示执行等级,数值越大越先执行
}
注册后pipelines.py里的数据处理类就能工作
定义数据处理类,必须继承object
process_item(item)为数据处理函数,接收一个item,item里就是爬虫最后yield item 来的数据对象
# -*- coding: utf-8 -*-
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
class AdcPipeline(object): #定义数据处理类,必须继承object
def process_item(self, item, spider): #process_item(item)为数据处理函数,接收一个item,item里就是爬虫最后yield item 来的数据对象
for i in range(0,len(item['title'])): #可以通过item['容器名称']来获取对应的数据列表
title = item['title'][i]
print(title)
link = item['link'][i]
print(link)
comment = item['comment'][i]
print(comment)
return item
最后执行
执行爬虫文件,scrapy crawl pach --nolog
あなたがプログラミングの世界ではまだ混乱している場合は、Pythonのバックルqun学ぶために私たちに参加することができます:784758214を、高齢者が学んでいる方法を見て。経験の交換。基本的なWeb開発Pythonスクリプトから、爬虫類、ジャンゴ、データマイニングや他のプロジェクトへのゼロベースのデータを戦うために仕上げています。どんな小さなPythonのパートナーに与えられました!いくつかの学習方法を共有し、細部に注意を払う必要があり、私たちに参加をクリックしてPythonの学習者の集い
あなたは、私たちが得たneed'veデータを見ることができます