О выходе скрапа? - PullRequest
       10

О выходе скрапа?

0 голосов
/ 13 февраля 2020

Я заранее создал много URL. Мне нужно решить, следует ли продолжить сканирование следующего URL-адреса в соответствии с DateTime содержимого URL-адреса. Однако я не могу реализовать этот вид проверки из-за псевдокода yield.

:

for url in urls:
    if not Auth(url.content.datetime):
        break

Я попытался установить временную метку глобального сообщения, чтобы определить, является ли время соответствует критериям для следующего запроса URL. Но, похоже, он ограничен yield, который не выполняется и является генератором.

код:

# -*- coding: utf-8 -*-
from lxml import etree
import scrapy
from scrapy_splash import SplashRequest
domain = "guba.eastmoney.com"


def make_urls(code: list) -> list:
    return [f"http://{domain}/list,{x}.html" for x in code]


url_list = make_urls(['000001'])


class EsCommentSpider(scrapy.Spider):
    name = 'es_comment'
    allowed_domains = ['guba.eastmoney.com']
    start_urls = url_list

    def headers(self):
        return {"User-Agent": "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"}

    def start_requests(self):
        for x in self.start_urls:
            yield SplashRequest(x, callback=self.parse)

    def parse(self, response):

        count = response.xpath('//*[@class="sumpage"]/text()').extract_first()
        count = 20
        urls = [response.url]
        for x in range(1, count):
            urls.append(f"{response.url.replace('.html', f'_{str(x)}.html')}")
        for url in urls:
            # I need to get the datetime  in page_parse function  and  decide whether to continue 
            yield scrapy.Request(url, callback=self.page_parse, headers=self.headers())

    def page_parse(self, response):
        lis = response.xpath(
            "//div[contains(@class,'articleh normal_post')]").extract()
        for x in lis:
            block = etree.HTML(x)

            datetime = block.xpath("//span[@class='l5 a5']/text()")[0]

...