Python入门学习记录04–Scrapy爬取豆瓣Top250图书(可翻页)
文章目录
第一步 安装Scrapy
(1)国内镜像源加速
#终端输入
pip install scrapy -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
(2)安装快结束会提示twisted无法安装
点击这里下载twisted
找到twisted 下载对应版本到本地
然后执行(这是我的版本,根据情况变动)
#下载安装目录下输入
pip install Twisted‑20.3.0‑cp38‑cp38‑win_amd64.whl
第二步 新建项目
#打开终端执行
scrapy startproject ZYP_Scarpy(文件名)
第三步 新建.py主文件
#在所创建的目录下运行cmd
scrapy genspider DouBanBook.py(文件名)
第四步 改动settings.py
将遵守君子协议改为“否”
将请求User-Agent改为浏览器地址
ROBOTSTXT_OBEY = False
DEFAULT_REQUEST_HEADERS = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36 Edg/85.0.564.44'
}
第四步 编写DouBanBook.py
import scrapy
a=[]
for i in range(10):
a.append('https://book.douban.com/top250?start='+str(i*25))
class DoubanbookSpider(scrapy.Spider):
name = 'DouBanBook' #爬虫的名字,这是唯一的,不能和项目名称重复
allowed_domains = ['douban.com'] #可以限制不要爬出界
start_urls = a #起始的request
def parse(self, response): #response 是爬取过后返回回来的数据
#print(response.body())
books = response.xpath('//div[contains(@class,"indent")]/table//tr[contains(@class,"item")]')
for book in books:
book_name = book.xpath('td[2]//a/@title').extract()
book_info = book.xpath('td[2]//p[@class="pl"]/text()').extract()
book_pingfen = book.xpath('td[2]//div[contains(@class,"clearfix")]/span[2]/text()').extract()
book_quote = book.xpath('td[2]//p[@class="quote"]/span/text()').extract()
#print(book_name)
yield{
"book_name":book_name,
"book_info":book_info,
"book_pingfen" :book_pingfen,
"book_quote": book_quote
}
pass
第五步 爬取数据
#最后在项目下运行cmd
scrapy crawl DouBanBook(文件名)
运行部分截图
Over!