scrapy爬取BugList记录

安装scarpy-win

常规方法:打开终端,步骤是windows+r,输入cmd回车进入终端。

遇到pip版本过于老旧不能使用,需要升级pip版本,输入

pip install --upgrade pip

回车,升级成功。

安装scrapy命令:

pip install Scrapy

创建scrapy项目

  1. 新建一个根目录文件夹,例如:BugList
  2. 通过cmd进入该文件夹内,键入scrapy startproject BugList即可创建名为BugList的scarpy项目
  3. 此时项目文件的包含有:
    spiders文件夹:存放你Spider文件,也就是你爬取的py文件
    scrapy.cfg:配置文件
    items.py:相当于一个容器,和字典较像
    middlewares.py:定义Downloader Middlewares(下载器中间件)和Spider Middlewares(蜘蛛中间件)的实现
    pipelines.py:定义Item Pipeline的实现,实现数据的清洗,储存,验证。
    settings.py:全局配置
  4. 在spiders文件夹下创建一个bugList.py文件,你也可以按住shift-右键-在此处打开命令窗口powershell,输入:scrapy genspider 文件名 要爬取的网址。
  5. 到此处,一个完整scarpy项目算是建立完成。

爬虫编写及scrapy设置

  1. 打开Spider文件夹中刚刚创建的爬虫文件,文件内包含有
    class BugListSpider(CrawlSpider):
    name:项目的名字
    allowed_domains:是允许爬取的域名,比如一些网站有相关链接,域名就和本网站不同,这些就会忽略。
    start_urls:是Spider爬取的网站,定义初始的请求url,可以多个。
    parse方法:是Spider的一个方法,在请求start_url后,之后的方法,这个方法是对网页的解析,与提取自己想要的东西。
    response参数:是请求网页后返回的内容,也就是你需要解析的网页。

  2. 如果需要爬取多个网页,可以预先设置start_urls=[],然后根据某个网页获取子页面的url,再start_urls.append()即可,例如:

url = 'xxxxxxxxxxxxxx'
res = requests.get(url)
res.encoding='utf-8'
source = BeautifulSoup(res.text).find_all('td', 'id_column')
for index, tag in enumerate(source):
    start_urls.append('https:xxxx?id=' + tag.find('a').getText())
  1. 编写parse方法
sel = Selector(response)
item = BuglistItem()
item['id']=sel.xpath('//*[@id="changeform"]/div[1]/a/b//text()').extract()
#需要定义更多的item,可以在此添加,通过xpath定位到具体元素
yield item
  1. 编写items.py
    添加同parse方法中item相同的元素,例如
id=scrapy.Field()
  1. setting.py的设置
    设置 ROBOTSTXT_OBEY = False
    表示不遵守机器人协议
  2. 运行
    在cmd中cd进入到scrapy.cfg的同级目录下,键入运行命令
#运行,输出结果到控制窗口
scrapy crawl bugList  
#运行,保存爬取结果为指定文件格式,存储至项目文件夹根目录
scrapy crawl myspider -o item.json 
scrapy crawl myspider -o item.csv
scrapy crawl myspider -o item.xml
  1. 快捷运行
    如果不想通过cmd运行爬虫程序,可以在scrapy.cfg文件的同级目录新建start.py文件,直接运行start.py也可以启动爬虫。
    start.py的内容为:
#-*- coding: utf-8 -*-
from scrapy import cmdline
cmdline.execute("scrapy crawl bugList".split())
#scrapy crawl myspider -o item.json
#scrapy crawl myspider -o item.csv
#scrapy crawl myspider -o item.xml

数据处理及输出规则

  1. scrapy支持自定义规则过滤数据,具体方法在pipeline.py中编写。需要导入scrapy.exceptions中的DropItem,被过滤的数据通过DropItem丢弃,过滤规则写在process_item方法中,示例如下:
#-*- coding: utf-8 -*-

#Define your item pipelines here
#
#Don't forget to add your pipeline to the ITEM_PIPELINES setting
#See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
from scrapy.exceptions import DropItem

class BuglistPipeline(object):
    def process_item(self, item, spider):
        if len(str(item['description']))<150 or len(str(item['id']))>10 or item['id'] is None:
            raise DropItem
        else:
            return item
  1. scrapy是多线程爬虫,一般以无序输出item的内部值。如果需要自定义输出的顺序,如csv中的列顺序,可以通过在setting.py中增加FEED_EXPORT_FIELDS,输入值的顺序,示例如下:
#自定义输出顺序
FEED_EXPORT_FIELDS = ["id", "summary", "product","component"]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个基于Python的开源网络爬虫框架,它提供了一简单而强大的API,可以帮助开发者快速高地爬取网页数据。使用Scrapy可以轻松地编写爬虫程序,实现对网页的自动化访问、数据提取和持久化等功能。 要使用Scrapy爬取天眼查的数据,首先需要安装Scrapy库。可以使用pip命令进行安装,如下所示: ``` pip install scrapy ``` 接下来,创建一个Scrapy项目,可以使用命令行工具scrapy startproject来创建一个新的项目,如下所示: ``` scrapy startproject project_name ``` 其中,project_name是你自定义的项目名称。 创建完项目后,进入项目目录,可以看到一些自动生成的文件和文件夹。其中,spiders文件夹是用于编写爬虫程序的地方。 在spiders文件夹中创建一个新的Python文件,例如tianyancha_spider.py。在该文件中,可以定义一个Spider类,并继承自scrapy.Spider类。在Spider类中,可以定义要爬取的网站URL、数据提取规则等。 以下是一个简单的示例代码,用于爬取天眼查的公司信息: ```python import scrapy class TianyanchaSpider(scrapy.Spider): name = 'tianyancha' start_urls = ['https://www.tianyancha.com/'] def parse(self, response): # 在这里编写数据提取的代码 pass ``` 在parse方法中,可以使用XPath或CSS选择器等方式提取网页中的数据,并进行处理和存储。 运行爬虫程序,可以使用命令行工具scrapy crawl来启动爬虫,如下所示: ``` scrapy crawl tianyancha ``` 以上是一个简单的Scrapy爬取天眼查的示例,你可以根据自己的需求进行进一步的开发和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值