python爬虫——以当当网为例
要求:获得当当网中国现代小说中一万本书的书名、作者、价格
软件:anaconda下的scrapy框架,pycharm
-
第一步:下载scrapy
cmd:scrapy// (if no module named'scrapy') pip install scrapy
-
第二步:创建项目
新建文件夹dangdang
cmd:cd dangdang
scrapy startproject dangdangs//创建项目
-
第三步:编译pycharm爬行命令
打开当当网的中国现代小说页面,该页面网址为:http://category.dangdang.com/cp01.03.30.00.00.00.html
在网页空白处右键点击检查,查看对应的代码用pycharm打开dangdangs.py
用xpath定位书名、作者和价格
# -*- coding: utf-8 -*-
import scrapy
class DangdangsSpider(scrapy.Spider):
name = 'dangdangs'
allowed_domains = ['category.dangdang.com']
start_urls = ['http://category.dangdang.com/cp01.03.30.00.00.00.html']
def parse(self, response):
selector = response.xpath('//ul[@class="bigimg"]//li')//进入ul class=bigimg,并获取其下所有li行的信息
for s in selector://将每行信息提取出来
title = s.xpath('p[1]/a/@title').extract_first()//书名:第一个p下a的title属性
author = s.xpath('p[5]/span/a/@title').extract_first()//作者:第五个p下span下a的title属性
price = s.xpath('p[3]/span/text()').extract_first()//价格:
yield {
'title': title,
'author': author,
'price': price,
}//设置表格的列名
next_urls = response.xpath('//div[@class="paging"]/ul/li[@class="next"]/a/@href').extract_first()//获得下一页网址
if next_urls://继续爬下一页
next_url=response.urljoin(next_urls)
yield scrapy.http.Request(next_url,callback=self.parse)
pass
4.将爬取内容导出到excel
在pycharm命令行内输入:
scrapy crawl dangdangs -o dd.csv -s FEED_EXPORT_ENCODING='utf-8-sig'
其中FEED_EXPORT_ENCODING=‘utf-8-sig’解决导出到excel文字乱码问题