1、项目简介
目标:爬取迁木网世界大学排名及大学基本信息,图示
步骤:
- 获取排名当前页中所有大学的链接
- 跳转链接,获取表格中大学的基本信息。
; 2、scrapy创建项目
2.1、创建项目
创建项目命令:
scrapy startproject myproject [project_dir]
scrapy startproject qianmu1
- myproject谁自定义项目名称,路径若不指定,默认为当前路径。
2.2、创建spider
通过前面知道,spider用于处理响应会的数据,命令如下:
scrapy gensider example example.com
- example:为spider名称
- example.com: 为要爬取的域名,限定爬取的范围。
创建我们的spider
cd qianmu1
scrapy genspider usinfo www.qianmu.org
2.3、编写逻辑代码
usinfo.py代码如下:
import scrapy
class UsinfoSpider(scrapy.Spider):
name = 'usinfo'
allowed_domains = ['www.qianmu.org']
start_urls = ['http://www.qianmu.org/ranking/1528.htm']
def parse(self, response):
links = response.xpath('//div[@class="rankItem"]/table//tr[position()>1]/td[2]/a/@href').getall()
for link in links:
yield response.follow(link, self.parse_university)
def parse_university(self, response):
"""解析大学链接获取详细信息"""
data = {'name': response.xpath('//div[@id="wikiContent"]/h1/text()').get()}
table = response.xpath('//div[@id="wikiContent"]/div[@class="infobox"]/table')
if table:
table = table[0]
keys = table.xpath('.//td[1]/p/text()').getall()
cols = table.xpath('.//td[2]')
values = [''.join((col.xpath('.//text()').getall())).replace('\t', '') for col in cols]
if len(keys) == len(values):
data.update(zip(keys, values))
yield data
2.4、生成虚拟环境
命令:
virtualenv env
2.3、运行
步骤:
- 进入虚拟环境
cd env/Scripts
activate
- 启动项目
scrapy craw usinfo
- usinfo:生成spider时的名称
3、项目目录
简单介绍各个目录/文件:
- qianmu1:项目根目录
- -env:虚拟环境
- -qianmu1:创建项目自动生成
- –spiders:放置所有的spiders,spider可以创建多个
- —usinfo.py:某个具体的spider
- –items.py:结构化的数据
- –middlewares.py:中间件
- –pipelines.py:管道,把解析后的数据放到哪里,比如持久化到数据库或者文件
- –settings.py:配置文件
- -scrapy.cfg:scrapy配置文件
关于虚拟环境的相关知识,可自行查阅相关文档。
参考视频:https://www.bilibili.com/video/BV1R7411F7JV p557~p558
源代码仓库地址:https://gitee.com/gaogzhen/python-study
QQ群:433529853Original: https://blog.csdn.net/gaogzhen/article/details/123095659
Author: gaog2zh
Title: 项目创建和运行-scrapy框架3-python
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/790497/
转载文章受原作者版权保护。转载请注明原作者出处!