【问题标题】:I am trying to join a URL in scrapy but unable to do so我正在尝试在 scrapy 中加入 URL 但无法这样做
【发布时间】:2020-06-03 06:42:15
【问题描述】:

我正在尝试从一个网站获取(id 和名称)即名称,并希望将变量附加到另一个链接。例如,在名称变量中我得到 - /in/en/books/1446502-An-Exciting-Day.(有很多记录)然后我想将名称变量附加到“https://www.storytel.com”以获取特定于这本书。我还想为 a_name 设置一个条件,即如果 response.css('span.expandAuthorName::text') 不可用,而不是 put '-' else fetch the name。

import scrapy

class BrickSetSpider(scrapy.Spider):
    name = 'brickset-spider'
    start_urls = ['https://www.storytel.com/in/en/categories/1-Children?pageNumber=100']

    def parse(self, response):
        # for quote in response.css('div.gridBookTitle'):
        #     item = {
        #         'name': quote.css('a::attr(href)').extract_first()
        #     }
        #     yield item
        urls = response.css('div.gridBookTitle > a::attr(href)').extract()
        for url in urls:
            url = ['https://www.storytel.com'].urljoin(url)
            yield scrapy.Request(url=url, callback=self.parse_details)

    def parse_details(self, response):
        yield {
            'a_name': response.css('span.expandAuthorName::text').extract_first()
        }

我正在尝试附加“https://www.storytel.com”.urljoin(url),但我收到了同样的错误。作为scrapy的新手,我尝试了很多东西,但无法解决问题。我收到错误 - 第 15 行列表对象没有属性 urljoin。关于如何克服这一点的任何线索。提前致谢。

【问题讨论】:

    标签: python-3.x web-scraping scrapy data-science


    【解决方案1】:

    检查此解决方案。

    for url in urls: 
      url = 'https://www.storytel.com'+ url 
    
      yield scrapy.Request(url=url, callback=self.parse_details)
    

    这有助于让我知道。

    【讨论】:

      【解决方案2】:
      url = ['https://www.storytel.com'].urljoin(url)
      

      在这里,您试图将一个字符串“加入”到一个 list 字符串中。如果您想将给定的 url(它是一个字符串)附加到基本字符串 (https://etc...),您可以这样做:

      full_url = "https://www.storytel.com".join(url)
      
      # OR
      
      full_url = "https://www.storytel.com" + url
      

      您可以在此处查看有关字符串(特别是“加入”)的文档:https://docs.python.org/3.8/library/stdtypes.html#str.join

      编辑:另外,我不确定 urljoin 是否存在...

      【讨论】:

      • 我已经试过你提到的东西了。它给了我一个网址字符串,这不符合我的目的。感谢您的帮助!!!
      猜你喜欢
      • 2019-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-02
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      相关资源
      最近更新 更多