利用scrapy进行爬虫(windows系统)
前言
提示:这是我第二篇博客,上一篇是在今天下午:
今天学习了利用scrapy进行爬虫,从早上一直折腾到晚上,出了几个问题,困扰了我半天,虽然一点一点的解决了,最终实现了想要的结果,但是对于那些问题为什么是那样解决的,我现在还不是很懂,今天写了这个博客,一方面是为了巩固自己今天学习到的东西,另一方面,是希望自己若干年以后看到这篇博客,不会再向当初一样,知其然却不知其所以然,算是自己心里的一个约定吧。
一、scrapy是什么?
Scrapy 是一套基于基于Twisted的异步处理框架,纯python实现的爬虫框架,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片。
二、步骤
1.下载库
下载链接:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
需要下载两个:Twisted和Scrapy,根据自己的pycharm版本去选择对应库的版本。
下载好后,打开cmd终端,查看所在文件位置,将下载好的库放入这个位置下(当然,也可以将cmd打开至你的库的所在位置):

2.安装库
先安装Twisted再安装Scrapy,命令都是:pip install ×××××.whl
如果安装Scrapy时出现问题,先输入命令:pip install wheel
3.创建Scrapy项目
找到你pycharm的项目文件所在位置,创建项目文件scrapy_project,然后将cmd定位至该位置,输入scrapy startproject douban,enter就可以了,位置可在pycharm中看到:(已经创建过了我就不创建了)


4.新建爬虫文件
项目创建好之后,pycharm中会出现对应项目文件,如下图,其中文件spiders是爬虫文件,需要在该文件下新建一个文件Book_douban_Top250,并导入库(图中Book_douban_Top250.py是已经新建过的)

5.代码
该项目中有许多文件,但不是所有文件在此项目上是用得上的
Book_douban_Top250.py主要负责爬虫部分:(记得引入库)
import scrapy
import bs4
from ..items import BookDoubanItem
class DoubanSpider(scrapy.Spider):
"""定义一个爬虫类"""
name='book_douban' # 定义爬虫的名字
allowed_domains=['book.douban.com'] # 定义允许爬虫爬取的网址域名(不需要加https://)。如果网址的域名不在这个列表里,就会被过滤掉
start_urls=[]
for x in range(3):
url='https://book.douban.com/top250?start='+format(x * 25)
start_urls.append(url)
def parse(self,response):
"""parse是默认处理response的方法"""
bs=bs4.BeautifulSoup(response.text,'html.parser')
datas=bs.find_all('tr',class_="item")
for data in datas:
item=BookDoubanItem()
item['title']=data.find_all('a')[1]['title']
item['publish']=data.find('p',class_='pl').text
item['score']=data.find('span',class_='rating_nums').text
# print(response.text)
yield item # 把获得的item传递给引擎
items.py是作为容器使用,用于记录数据:
import scrapy
# 导入scrapy
class BookDoubanItem(scrapy.Item):
"""定义一个类BookDoubanItem,它继承自scrapy.Item"""
title=scrapy.Field() # 定义书名的数据属性
publish=scrapy.Field() # 定义出版信息的数据属性
score=scrapy.Field() # 定义评分的数据属性
settings.py中的USER_AGENT和ROBOTSTXT_OBEY需要做修改:
USER_AGENT改成我爬取网站对应的部分
ROBOTSTXT_OBEY改成False,目的是不遵循robots协议
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
ROBOTSTXT_OBEY = False
6.项目执行
此时,总体完成了,但是有一个问题:现在没有办法让scrapy项目执行,所以需要再新建一个文件,用于执行项目,需要执行时就只要运行该文件:
新建文件main.py(注意该文件所在位置,位置错误会导致无法正确运行)

from scrapy import cmdline
# 导入cmdline模块,可以实现控制终端命令行
cmdline.execute(['scrapy','crawl','book_douban'])
# 用execute()方法,输入运行scrapy的命令

还有一种方法,直接在cmd运行,有个文件名叫scraypy.cfg,这是该项目的配置文件,将cmd定位到该文件所处位置,输入scrapy crawl book_douban也可以:


总结
以上就是对该项目的总结,代码部分没有讲解太多,因为我大部分时间都花在了库的下载和安装上了,到现在怎么安装上的我都还不能说出个所以然来,不过我如果后面有时间可能会再做一个代码部分的讲解。
本文介绍了在Windows环境下使用Scrapy框架搭建爬虫的详细步骤,包括下载和安装Twisted与Scrapy库,创建Scrapy项目,编写爬虫文件,设置配置文件以及执行爬虫项目。博客作者通过实例展示了如何爬取豆瓣Top250书籍的书名、出版信息和评分,并分享了遇到的问题及解决方案。
&spm=1001.2101.3001.5002&articleId=113818985&d=1&t=3&u=1f3b6ed57cbf43b4ab06f0d9f6f2bd0c)
16万+

被折叠的 条评论
为什么被折叠?



