Scrapy安装与开始项目

打开命令行

进入需要创建虚拟环境的所属文件夹

创建虚拟环境:

python -m venv 虚拟环境名称

进入虚拟环境

虚拟环境名\scripts\activate

在虚拟环境中安装包(scrapy)

pip install scrapy

利用包开展项目

scrapy startproject tutorial

备注:scrapy需要c++ 14.0与pywin32(包)

在命令行中运行scrapy的项目,应进入该项目的虚拟环境,再进入第一个toturial(即与idea/venv并行的项目文件)后写scrapy crawl quotes(爬虫的名字),在命令行中选择文件元素使用

scrapy shell 'http://quotes.toscrape.com/page/1'

在css中,使用extract()exteact_first()方法来得到html文件的元素,或者使用re()方法根据正则表达式提取html文件元素

可以在spriders中写extract等需要的元素,在命令行中执行, 运行爬虫,并存入名为quotes的json文件

scrapy crawl quotes -o quotes.json

找到sprider正在爬的网页使用response.url,在sprider中,url列表名称不能变必须为start_urls

中止正在运行的sprider,ctrl+c,继续该sprider (somespider指sprider名字(PS:此种回复不能续写json)):

scrapy crawl somespider -s JOBDIR=crawls/somespider-1

可续写json的命令,json为原始json名

scrapy crawl answers -s JOBDIR=crawls/answers-1 -o answers.json

爬取的数据写入csv后无法显示中文的问题,可通过导入mongodb数据库再导出解决

可以把网页整个保存成为html文件,方便后期处理:在spider中这样写

def parse(self, response):
    filename = re.sub(r'https://www.pclady.com.cn/wiki/',"",response.url)
    with open(filename, 'wb') as f:
        f.write(response.body)

scrapy的可以将当前url放入spider类的其他方法,其中dont_filter指的可以重复爬取网页。

response.follow(url, callback=self.final_parse,dont_filter=True)

Last updated