gpt4 book ai didi

python - Scrapy:抓取特定的 URL

转载 作者:行者123 更新时间:2023-11-30 23:13:28 24 4
gpt4 key购买 nike

我正在尝试为学校项目抓取雅虎股票,但我不知道如何使用非常确定的链接来浏览页面的每个链接。目标是使用 URL 的特定结尾部分迭代每只股票,如下所示:

Starting URL = ["https://ca.finance.yahoo.com/q/hp?s=BMO.TO&a=02&b=2&c=2005&d=02&e=2&f=2015&g=m"]

下一个 URL 类似于:

#Canadian Imperial(note the "CM"):
"https://ca.finance.yahoo.com/q/hp?s=CM.TO&a=02&b=2&c=2005&d=02&e=2&f=2015&g=m"

#Blackberry (note the "BB"):
"https://ca.finance.yahoo.com/q/hp?s=BB.TO&a=02&b=2&c=2005&d=02&e=2&f=2015&g=m"

等等...

换句话说,唯一会改变的是 "hp?s="".TO&a" 之间的字符。

想知道这是否可能。 URL 的结尾部分必须与我需要访问的页面保持一致。不幸的是,雅虎的每个页面中都没有指向其他股票的链接。

如果我可以使用Scrapy 的规则和 SmglLinkExtractor 来做到这一点,那就更好了。

非常感谢任何帮助!

谢谢!

当前 Scrapy 代码:

from scrapy.spider import Spider
from scrapy.selector import Selector
from dirbot.items import Website
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor


class DmozSpider(Spider):
name = "dmoz"
allowed_domains = ["ca.finance.yahoo.com"]
start_urls = [
"https://ca.finance.yahoo.com/q/hp?s=BMO.TO&a=02&b=2&c=2005&d=02&e=2&f=2015&g=m"
]



rules = [
Rule(LinkExtractor(allow=r"/q/hp\?s=\w+\.TO&a=02&b=2&c=2005&d=02&e=2&f=2015&g=m"), follow=True)
]

def parse(self, response):

item = Website()
item['name'] = response.xpath('//div[@class="title"]/h2/text()').extract()

print item['name']

最佳答案

制定规则来遵循与模式匹配的链接:

rules = [
Rule(LinkExtractor(allow=r"/q/hp\?s=\w+\.\w+&a=\d+&b=\d+&c=\d+&d=\d+&e=\d+&f=\d+&g=m"), follow=True)
]

不过,我不确定您是否需要在此处检查所有 URL 参数。简化版:

rules = [
Rule(LinkExtractor(allow=r"/q/hp\?s=\w+\.\w+"), follow=True)
]

并且,不要忘记导入:

from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors import LinkExtractor

关于python - Scrapy:抓取特定的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29312699/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com