Scrapy 如何在输出中添加 "query url" 作为项目
Scrapy how to add the "query url" as item in the output
我有一个 url 的列表,我将它们作为 start_urls 导入到一个 scrapy 项目中。
我想在输出中添加生成这些结果的查询 (url)。
例如,如果我有
“第一个标题结果”、“地址”等 ----> URL 生成此输出的人。
这是我的代码
import scrapy
from scrapy import Request
class GmapsclosedlocationsSpider(scrapy.Spider):
name = 'gmapsclosedlocations'
allowed_domains = ['https://www.google.com']
with open('urls.csv') as file:
start_urls = [line.strip() for line in file]
def start_request(self):
request = Request(url=self.start_urls, callback=self.parse)
yield request
def parse(self, response):
yield {
'name' : response.css('.qrShPb').extract(),
'closed' : response.css('p.wlxxf::text').extract(),
'address' : response.css('.LrzXr::text').extract(),
'phone' : response.xpath('//*[contains(text(), "+46")]').extract_first(),
'website' : response.css('a.ab_button::attr(href)').extract(),
'firsttitle' : response.css('.DKV0Md::text').extract_first()
}
我想在“yield”中添加一个新项目,添加 url 但我不知道该怎么做
谢谢!
只需使用 response.url 方法获取 yield 关键字中的每个当前 url,如下所示:
def parse(self, response):
yield {
'name' : response.css('.qrShPb').extract(),
'closed' : response.css('p.wlxxf::text').extract(),
'address' : response.css('.LrzXr::text').extract(),
'phone' : response.xpath('//*[contains(text(), "+46")]').extract_first(),
'website' : response.css('a.ab_button::attr(href)').extract(),
'firsttitle' : response.css('.DKV0Md::text').extract_first(),
'url': response.url}
我有一个 url 的列表,我将它们作为 start_urls 导入到一个 scrapy 项目中。 我想在输出中添加生成这些结果的查询 (url)。 例如,如果我有 “第一个标题结果”、“地址”等 ----> URL 生成此输出的人。
这是我的代码
import scrapy
from scrapy import Request
class GmapsclosedlocationsSpider(scrapy.Spider):
name = 'gmapsclosedlocations'
allowed_domains = ['https://www.google.com']
with open('urls.csv') as file:
start_urls = [line.strip() for line in file]
def start_request(self):
request = Request(url=self.start_urls, callback=self.parse)
yield request
def parse(self, response):
yield {
'name' : response.css('.qrShPb').extract(),
'closed' : response.css('p.wlxxf::text').extract(),
'address' : response.css('.LrzXr::text').extract(),
'phone' : response.xpath('//*[contains(text(), "+46")]').extract_first(),
'website' : response.css('a.ab_button::attr(href)').extract(),
'firsttitle' : response.css('.DKV0Md::text').extract_first()
}
我想在“yield”中添加一个新项目,添加 url 但我不知道该怎么做 谢谢!
只需使用 response.url 方法获取 yield 关键字中的每个当前 url,如下所示:
def parse(self, response):
yield {
'name' : response.css('.qrShPb').extract(),
'closed' : response.css('p.wlxxf::text').extract(),
'address' : response.css('.LrzXr::text').extract(),
'phone' : response.xpath('//*[contains(text(), "+46")]').extract_first(),
'website' : response.css('a.ab_button::attr(href)').extract(),
'firsttitle' : response.css('.DKV0Md::text').extract_first(),
'url': response.url}