国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

python - scrapy obtient le contenu spécifié de la page Web, puis passe à la page suivante pour continuer, avec un nombre fixe de cycles. . question
天蓬老師
天蓬老師 2017-06-12 09:19:33
0
2
942
import scrapy
from movie.items import MovieItem
 
class MeijuSpider(scrapy.Spider):
    name = "meiju"
    allowed_domains = ["alexa.cn"]
    start_urls = ['www.alexa.cn/siterank']
 
def parse(self, response):
    movies = response.xpath('//ul[@class="siterank-sitelist"]/li')
    for each_movie in movies:
        item = MovieItem()
        item['name'] =each_movie.xpath('.//p[@class="infos"]').extract()[0]
        yield item

Le code est comme ?a. Ce que je veux capturer en boucle, c'est?:

www.alexa.cn/siterank/2
www.alexa.cn/siterank/3
www.alexa.cn/siterank/4
.....

Je pense que la boucle devrait être comme ceci pour i in range(2,10):
yield scrapy.Request('www.alexa.cn/siterank/%d'%i), mais je ne sais pas comment remplir dans. Aide

天蓬老師
天蓬老師

歡迎選擇我的課程,讓我們一起見證您的進(jìn)步~~

répondre à tous(2)
洪濤

Si vous êtes s?r de la portée, il est préférable de commencer par start_urls

start_urls = ['http://www.alexa.cn/siterank/{n}'.format(n=x) for x in range(2,10)] 
學(xué)習(xí)ing

Il y a des exemples sur le site officiel. Concernant le suivi de la page suivante, les exemples sur le site officiel utilisent la récursion. Le code sur le site officiel est le suivant :

import scrapy


class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/page/1/',
    ]

    def parse(self, response):
        for quote in response.css('p.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.css('small.author::text').extract_first(),
                'tags': quote.css('p.tags a.tag::text').extract(),
            }
        
        # next_page是用css選擇器獲取到的下一頁(yè), 在下面它遞歸地調(diào)用了parse方法來不斷地追蹤下一頁(yè)
        next_page = response.css('li.next a::attr(href)').extract_first()
        if next_page is not None:
            next_page = response.urljoin(next_page)
            yield scrapy.Request(next_page, callback=self.parse)

J'ai utilisé Scrapy pour écrire un robot Tieba. J'ai également utilisé cette méthode récursive pour obtenir la page suivante :

import scrapy
from tieba_crawler.items import ImageItem


class TiebaSpider(scrapy.Spider):
    name = 'tbimg'

    def start_requests(self):
        url = 'http://tieba.baidu.com/f?kw=%E6%B8%A1%E8%BE%B9%E9%BA%BB%E5%8F%8B'
        yield scrapy.Request(url=url, callback=self.parse_post)

    def parse_post(self, response):
        post_list = response.css('ul#thread_list li.j_thread_list')
        for item in post_list:
            title = item.css('a.j_th_tit::text').extract_first()
            url = 'http://tieba.baidu.com' \
              + item.css('a.j_th_tit::attr(href)').extract_first()
            yield scrapy.Request(url=url, callback=self.parse_image)
        page_list = response.css('p#frs_list_pager a::attr(href)').extract()
        if not page_list:
            return
        else:
            next_page = page_list[-2]
            if next_page:
                yield response.follow(next_page, callback=self.parse_post)

    def parse_image(self, response):
        img_urls = response.css('p#j_p_postlist img.BDE_Image::attr(src)').extract()
        yield ImageItem(image_urls=img_urls)
        page_list = response.css('ul.l_posts_num li.pb_list_pager a::attr(href)').extract()
        if not page_list:
            return
        else:
            next_page = page_list[-2]
            if next_page:
                yield response.follow(next_page, callback=self.parse_image)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal