安装Scrapy
pip install scrapy
创建项目
scrapy startproject project_name
项目中的目录和文件的作用如下:
scrapy.cfg:Scrapy 项目的配置文件。
project_name/:Scrapy 项目的 Python 包。
init.py:Python 包必须包含的文件,用于标识该目录为一个 Python 包。
items.py:定义 Scrapy 爬虫要抓取的数据模型。
middlewares.py:定义 Scrapy 爬虫的中间件。
pipelines.py:定义 Scrapy 爬虫的数据处理管道。
settings.py:Scrapy 项目的全局配置文件。
spiders/:存放 Scrapy 爬虫的目录。
init.py:标识 spiders/ 目录为 Python 包。
spiders.py:存放 Scrapy 爬虫的 Python 文件。
Pycharm打开项目
用pycharm菜单open选择刚刚创建出来的项目文件夹
如果使用虚拟环境,因为虚拟环境是一份python基础运行环境的副本,所以打开文件夹项目后需要在虚拟环境中再次安装scrapy!,一遍将将scrapy安装到虚拟环境中
pip install scrapy
创建蜘蛛
在pycharm命令行中,使用
scrapy genspider spider-name website-url
命令创建一个新的蜘蛛。
例如,如果您要创建一个名为“mySpider”的蜘蛛,并爬取“http://www.example.com”网站,
您可以使用以下命令:
scrapy genspider mySpider http://www.douban.com
进入项目目录,编辑刚刚创建的蜘蛛。默认情况下,蜘蛛应该在project-name/spiders目录中。打开蜘蛛文件,可以看到其中有一个名为start_urls的属性,它包含了蜘蛛开始爬取的URL列表。可以添加更多的URL到这个列表中。
实现解析方法定义爬虫逻辑
response.xpath()方法来选择要提取的元素,然后使用Item()类将其保存到数据库或文件中。例如,以下代码可以提取网页中的所有标题:
示范1:
def parse(self, response):
#如果使用css可以用用 response.css()
for title in response.xpath('//h1'):
yield {
'title': title.extract()
}
示范2
import scrapy
from spider2023 import Item
class DoubanSpider(scrapy.Spider):
name = "douban"
allowed_domains = ["movie.douban.com"]
start_urls = ["https://movie.douban.com/top250"]
def parse(self, response):
listItems= response.css("#content > div > div.article > ol > li")
for item in listItems:
itemObj=Item.Item()
itemObj["title"]= item.css("span.title::text").extract_first()
yield itemObj
pycharm内运行蜘蛛
运行蜘蛛。在pycharm命令行中,使用scrapy crawl spider-name -o xxx.csv命令来运行蜘蛛。例如,如果您要运行名为“mySpider”的蜘蛛,您可以使用以下命令:scrapy crawl mySpider -o xxx.csv
运行完成后,数据将被保存到 项目目录xxx.csv文件中
果您希望将数据保存到数据库中,您需要编写一个自定义的pipeline。
pycharm外运行蜘蛛
D:\spider2023>venv\Scripts\scrapy crawl douban -o doubanResult.csv