赞
踩
Scrapy,Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的, 后台也应用在获取API所返回的数据(例如 Amazon Associates Web Services ) 或者通用的网络爬虫. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持.
#1.win+R
#2.输入cmd,并且按下回车
#3.输入以下命令
python -m pip install --upgrade pip
pip install wheel
pip install lxml
pip install twisted
pip install pywin32
pip install scrapy
#在刚才安装scrapy框架的地方输入以下命令
#项目默认创建在c盘(一般在桌面)
scrapy startproject TXmovies
cd TXmovies
scrapy genspider txms v.qq.com
#目录下文件
ProjectName #项目文件夹
ProjectName #项目目录
items.py #定义数据结构
middlewares.py #中间件
pipelines.py #数据处理
settings.py #全局配置
__init__.py #爬虫文件
DEFAULT_REQUEST_HEADERS = { 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', 'User-Agent':'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36' }
import scrapy
classTxmoviesItem(scrapy.Item):
#definethefieldsforyouritemherelike:
#name=scrapy.Field()
name=scrapy.Field()
description=scrapy.Field()
import scrapy from ..items import TxmoviesItem class TxmsSpider(scrapy.Spider): name = 'txms' allowed_domains = ['v.qq.com'] #开始地址 start_urls = [ 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset=0&pagesize=30'] #位移 offset = 0 def parse(self, response): #定义数据结构,用来存放解析后的数据 items = TxmoviesItem() #将页面解析数据放到列表,每个页面有多个这种div,解析完后就有多条,存放到列表 lists = response.xpath('//div[@class="list_item"]') #便利列表,将数据存到数据结构item for i in lists: #从div中提取name items['name'] = i.xpath('./a/@title').get() #从div中提取name的描述 items['description'] = i.xpath('./div/div/@title').get() #移交控制权给管道 yield items #翻页, if self.offset < 120: #位移修改(页数修改) self.offset += 30 url = 'https://v.qq.com/x/bu/pagesheet/list?append=1&channel=cartoon&iarea=1&listpage=2&offset={}&pagesize=30'.format( str(self.offset)) #移交控制权,回调parse函数(和java的自己调自己类似) yield scrapy.Request(url=url, callback=self.parse)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。