【发布时间】:2014-11-04 21:06:04
【问题描述】:
我正在使用 Scrapy 检索有关 https://www.indiegogo.com 上的项目的信息。我想用 url 格式www.indiegogo.com/projects/[NameOfProject] 抓取所有页面。但是,我不确定如何在爬网期间访问所有这些页面。我找不到硬编码链接到所有/projects/ 页面的母版页。所有项目似乎都可以从https://www.indiegogo.com/explore 访问(通过可见链接和搜索功能),但我无法确定将返回所有页面的链接/搜索查询集。我的蜘蛛代码如下。这些 start_urls 和规则刮掉了大约 6000 个页面,但我听说应该有接近 10 倍的数量。
关于带参数的url:使用的filter_quick参数值来自Explore页面上的“Trending”、“Final Countdown”、“New This Week”和“Most Funded”链接,显然错过了不受欢迎和差的资助的项目。 per_page url 参数没有最大值。
有什么建议吗?谢谢!
class IndiegogoSpider(CrawlSpider):
name = "indiegogo"
allowed_domains = ["indiegogo.com"]
start_urls = [
"https://www.indiegogo.com/sitemap",
"https://www.indiegogo.com/explore",
"http://go.indiegogo.com/blog/category/campaigns-2",
"https://www.indiegogo.com/explore?filter_browse_balance=true&filter_quick=countdown&per_page=50000",
"https://www.indiegogo.com/explore?filter_browse_balance=true&filter_quick=new&per_page=50000",
"https://www.indiegogo.com/explore?filter_browse_balance=true&filter_quick=most_funded&per_page=50000",
"https://www.indiegogo.com/explore?filter_browse_balance=true&filter_quick=popular_all&per_page=50000"
]
rules = (
Rule(LinkExtractor(allow=('/explore?'))),
Rule(LinkExtractor(allow=('/campaigns-2/'))),
Rule(LinkExtractor(allow=('/projects/')), callback='parse_item'),
)
def parse_item(self, response):
[...]
旁注:当我尝试在浏览器中加载它们时,还有其他 URL 格式 www.indiegogo.com/projects/[NameOfProject]/[OtherStuff] 会重定向到所需的 URL 格式或给出 404 错误。我假设 Scrapy 正在正确处理重定向和空白页,但愿意听取验证这一点的方法。
【问题讨论】:
-
你解决过这个问题吗?
标签: web-scraping scrapy webpage