XPATH/Python/Scrapy - 如何将文本附加到 href
XPATH/Python/Scrapy - How to append text to href
我正在使用带有 Python 的 Scrapy 来抓取页面。我的目标是:
1.Get 来自 a 标签的 href 值并附加 https:/careers.infinity.aero/ 在 href 值之前
2.Export 此列表到 csv
文件
3.Run 第二个脚本将那些 URL 用于另一个刮擦
我一直在尝试让 concat 为 XPATH 工作 - 我认为这是语法或 href 位置的断开连接,但我还没有很幸运找到任何可以帮助我的东西。
这是我得到的:
import scrapy
from scrapy.crawler import CrawlerProcess
class dgtest2(scrapy.Spider):
name = "dgtest2"
start_urls = [
'https://careers.infinity.aero/Careers.aspx'
]
custom_settings = {
'FEED_FORMAT': 'csv',
'FEED_URI': 'urls.csv'
}
def parse(self, response):
url = response.xpath('concat( string("https://careers.infinity.aero/"), //a/@href)').getall()
yield {
'URL': url,
}
process = CrawlerProcess()
process.crawl(dgtest2)
process.start()
我已经成功地从我的第二个脚本中的 csv
文件导入,我已经成功地使用以下方法提取 href:
url = response.xpath('//a/@href').getall()
并将其导出到 csv
文件,但 href 值只是部分 URL,这就是我需要追加的原因。
如有任何信息,我们将不胜感激。提前致谢!
要将 url 的两部分连接成一个,您可以使用标准库 urljoin
函数,也可以使用 scrapy
提供的便捷方法 response.urljoin
.
使用响应对象
def parse(self, response):
for url in response.xpath("//a/@href").getall():
yield {
'URL': response.urljoin(url),
}
使用标准库(注意导入)
def parse(self, response):
from urllib.parse import urljoin
for url in response.xpath("//a/@href").getall():
yield {
'URL': urljoin("https:/careers.infinity.aero/", url),
}
我正在使用带有 Python 的 Scrapy 来抓取页面。我的目标是:
1.Get 来自 a 标签的 href 值并附加 https:/careers.infinity.aero/ 在 href 值之前
2.Export 此列表到 csv
文件
3.Run 第二个脚本将那些 URL 用于另一个刮擦
我一直在尝试让 concat 为 XPATH 工作 - 我认为这是语法或 href 位置的断开连接,但我还没有很幸运找到任何可以帮助我的东西。
这是我得到的:
import scrapy
from scrapy.crawler import CrawlerProcess
class dgtest2(scrapy.Spider):
name = "dgtest2"
start_urls = [
'https://careers.infinity.aero/Careers.aspx'
]
custom_settings = {
'FEED_FORMAT': 'csv',
'FEED_URI': 'urls.csv'
}
def parse(self, response):
url = response.xpath('concat( string("https://careers.infinity.aero/"), //a/@href)').getall()
yield {
'URL': url,
}
process = CrawlerProcess()
process.crawl(dgtest2)
process.start()
我已经成功地从我的第二个脚本中的 csv
文件导入,我已经成功地使用以下方法提取 href:
url = response.xpath('//a/@href').getall()
并将其导出到 csv
文件,但 href 值只是部分 URL,这就是我需要追加的原因。
如有任何信息,我们将不胜感激。提前致谢!
要将 url 的两部分连接成一个,您可以使用标准库 urljoin
函数,也可以使用 scrapy
提供的便捷方法 response.urljoin
.
使用响应对象
def parse(self, response):
for url in response.xpath("//a/@href").getall():
yield {
'URL': response.urljoin(url),
}
使用标准库(注意导入)
def parse(self, response):
from urllib.parse import urljoin
for url in response.xpath("//a/@href").getall():
yield {
'URL': urljoin("https:/careers.infinity.aero/", url),
}