Python爬虫(十三)——Scrapy爬取豆瓣图书
这次我们爬取豆瓣图书的top250的目录后进入书籍界面爬取界面中的书籍标签。
步骤
建立项目和Spider模板
使用以下命令
scrapy startproject demo
cd demo
scrapy genspider book book.douban.com
编写Spider
打开网页,我们发现一页只有25本书,然后打开第二页观察url:
我们发现start变成了25,由此推测每页有25本,于是我们设置start-urls为:
start_urls = ['https://book.douban.com/top250?start='+str(25*i) for i in range(10)]
接下来在top250的界面中爬取到每本书籍的url。打开网页观察代码:
经过观察,我们发现书籍的信息在标签tr属性为item的代码块中,而书籍的url则是在标签a中。利用yield将这个请求的结果返回:
def parse(self, response):
soup = BeautifulSoup(response.text, 'html.parser')
for item in soup.find_all('tr', attrs={
'class': 'item'}):
for href in item.find_all('a'):
if href.string != None:
url = href.attrs[