【发布时间】: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