Scrapy是一个用于网络爬虫的Python框架,它可以从网页中提取结构化的数据。href
标签通常用于HTML中的超链接,指向另一个网页或资源。
在Scrapy中,提取href
标签中的URL可以通过以下几种方式:
以下是一个使用Scrapy提取href
标签中完整URL的示例代码:
import scrapy
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = ['http://example.com']
def parse(self, response):
for href in response.css('a::attr(href)').getall():
yield {'url': href}
原因:网页中的链接可能是相对路径,而不是完整的URL。
解决方法:使用Scrapy的urljoin
方法将相对路径转换为绝对路径。
from urllib.parse import urljoin
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = ['http://example.com']
def parse(self, response):
for href in response.css('a::attr(href)').getall():
full_url = urljoin(response.url, href)
yield {'url': full_url}
原因:网页中可能存在重复的链接。
解决方法:使用集合或去重函数来去除重复的URL。
class ExampleSpider(scrapy.Spider):
name = "example"
start_urls = ['http://example.com']
def parse(self, response):
urls = set()
for href in response.css('a::attr(href)').getall():
full_url = urljoin(response.url, href)
if full_url not in urls:
urls.add(full_url)
yield {'url': full_url}
通过以上方法,你可以有效地从Scrapy中的href
标签中提取完整的URL,并解决常见的相关问题。
领取专属 10元无门槛券
手把手带您无忧上云