当我们选好城市,品牌,url变成下面这样
创建scrapy项目:
scrapy startproject scrapyProject
创建spider小爬虫:
scrapy genspider s_taoche taoche.com
目录
方法一:cmd-->scrapy crawl s_taoche
1.请求列表页
(1)分析接口
第一个{}添地名,第二个{}添品牌
地名的品牌的获取
方法一:直接出现过的地点,品牌写到一个文件里面,直接可以用
方法二:请求url='https://www.taoche.com/' ,构建树,使用xpath找到地址,品牌,然后拼接url,再次请求
因为后面步骤还很多,我就选用方法一
(2)请求url
s_taoche.py
class STaocheSpider(scrapy.Spider):
name = 's_taoche'
allowed_domains = ['taoche.com']
# 一次请求
start_urls = []
'https://chongqing.taoche.com/volkswagen/'
# 1.生成所有城市不同车型的首页地址
for city in CITY_CODE:
for car in CAR_CODE_LIST:
# url = 'https://{}.taoche.com/{}/'.format(city, car)
url=f'https://{city}.taoche.com/{car}/'
start_urls.append(url)
def parse(self, response):
pass
(3)分页
通过请求的url 得到response
在页面获取到最大页数,从1到最大页数遍历,拼接成完成的url
代码实现:
此时需要二次请求url,不能直接写在start_urls里面,需要封装一个二次请求的函数,
使用parse函数的格式
def parse(self, response):
# 1.从首页获取最大的页面page
max_page1 = response.xpath('//div[@class="paging-box the-pages"]/div/a[last()-1]/text()').extract()
max_page = self.get_value(max_page1)
# 二次请求,不能直接写在start_urls里面,需要封装一个二次请求的函数
# 2.列表页的翻页
'https://chongqing.taoche.com/volkswagen/?page=3'
for i in range(1, int(max_page) + 1):
# url=response.url+'?page={}'.format(i)
url = response.url + f'?page={i}'
# 3.封装请求 自己写一个parse的函数
y