【问题标题】:dynamic url crawl using python scrapy使用 python scrapy 进行动态 url 抓取
【发布时间】:2020-01-13 17:11:29
【问题描述】:

使用 python scrapy 我可以抓取单个静态网址,但如何抓取动态网址? 喜欢https://www.britannica.com/place/Mumbaihttps://www.britannica.com/place/Pune 一样明智。

单个静态页面的工作代码

import scrapy 
class GetTestSpider(scrapy.Spider):
    name = "testspeder"
    start_urls = ["https://www.britannica.com/place/Mumbai"]

    def parse(self,response):
    """Function to process search results page"""
    for site in response.xpath("//div[@class='infinite-pagination-container container']"):
        item = {
            'city': site.xpath(".//h1/text()").extract_first(default='').strip(),
            'writtenby': site.xpath(".//div[@class='md-byline']/div[@class='written-by']/span/text()").extract_first(default='').strip(),
            'alternativename': site.xpath(".//div[@class='md-alternate-titles']/text()").extract_first(default='').strip(),
        }
        yield item   

【问题讨论】:

  • 您的代码可以很好地处理多个地点条目,您还想实现什么?
  • @chrisckwong821,请检查更新的问题
  • @Gallaecio,根据上面的教程我创建了一个demo。
  • 什么不起作用?到目前为止,您尝试过什么来克服它?

标签: python scrapy


【解决方案1】:

您可以在 parse 函数中生成请求。

然后这个请求将由另一个处理,例如:

<your parse()>
...
if item["url_addres"]:
    yield Request(
        url=item["url_addres"], 
        callback=self.your_func_for_parsing, 
        meta={
            'item': item, 
            'dont_redirect': True,
            'handle_httpstatus_list': [302]
            }
    )

def your_func_for_parsing(self, response):
    item = response.meta['item']
    ...
    <do the job>

【讨论】:

  • 任何跟踪堆栈?究竟是什么问题?
  • 问题是我运行“scrapy crawl getpincodespider_xpath -o test1.json”时没有获取数据,请使用跟踪堆栈检查更新的问题
  • 一切似乎都很好 - 请检查response.xpath("//div[@class='eight columns']/ul/li") 是否给您任何结果。您使用密码["304210", "304230"] 废弃的网页在这里没有任何内容。使用浏览器检查。
  • 它工作正常,xpath 不是问题,请检查我的静态 url 工作代码。
  • 转到:getpincode.info/pincode/394210(来自您的静态)- 有很多结果。转到:getpincode.info/pincode/304210(来自您的动态)-那里没有结果。没有可以报废的记录。
猜你喜欢
  • 1970-01-01
  • 2016-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多