『scrapy爬虫』03. 爬取多个页面(详细注释步骤)

慈云数据 2024-05-30 技术支持 39 0

目录

    • 1. 分析网页试着拿到多个页面的url
    • 2. 抓取250个电影
    • 3. start_requests的使用
    • 4. 代码规范
      • 导库的优化
      • 关于重写
      • 最终修改后的代码
      • 总结
        div > div.article > ol > li") for list_item in list_items: movie_item=MovieItem()#新建类的对象 # 电影标题的 Selector # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1) movie_item['title']=list_item.css("span.title::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 # 电影评分 # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.bd > div > span.rating_num movie_item['score']=list_item.css("span.rating_num::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 # # 电影影评 # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.bd > p.quote > span movie_item['quato']=list_item.css("span.inq::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 yield movie_item#把整理得到的数据给管道 # 单个页面selector # content > div > div.article > div.paginator > a:nth-child(3) # ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值,并将其存储在一个列表中。 hrefs_list=myselector.css('div.paginator > a::attr(href)') for href in hrefs_list: url=response.urljoin(href.extract()) print(url)

        cmd运行,可以看到获取了url

        scrapy crawl douban
        

        在这里插入图片描述


        div > div.article > ol > li") for list_item in list_items: movie_item=MovieItem()#新建类的对象 # 电影标题的 Selector # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.hd > a > span:nth-child(1) movie_item['title']=list_item.css("span.title::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 # 电影评分 # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.bd > div > span.rating_num movie_item['score']=list_item.css("span.rating_num::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 # # 电影影评 # content > div > div.article > ol > li:nth-child(1) > div > div.info > div.bd > p.quote > span movie_item['quato']=list_item.css("span.inq::text").extract_first() # extract_first()从选择器中提取第一个匹配的数据。 yield movie_item#把整理得到的数据给管道 # 单个页面selector # content > div > div.article > div.paginator > a:nth-child(3) # ::attr(href)表示选取元素的href属性。使用.getall()方法可以获取匹配到的所有元素的href属性值,并将其存储在一个列表中。 hrefs_list=myselector.css('div.paginator > a::attr(href)') for href in hrefs_list: url=response.urljoin(href.extract()) # print(url) # 将 Request 对象加入到爬虫的请求队列中,以便发送请求,相当于对每个页面执行抓取数据 yield Request(url=url) #注意这个Request是来自scrapy的. from scrapy import Selector,Request

        cmd运行

        scrapy crawl douban  -o douban250.csv
        

        在这里插入图片描述

微信扫一扫加客服

微信扫一扫加客服

点击启动AI问答
Draggable Icon