【发布时间】:2019-04-03 06:59:08
【问题描述】:
大家好,我是抓取数据的新手,我已经尝试过基本的。但我的问题是我需要抓取 2 个具有相同域的网页
我的逻辑是,
第一页www.sample.com/view-all.html
*此页面打开所有项目列表,我需要获取每个项目的所有href attr。
第二页www.sample.com/productpage.52689.html
*这是来自第一页的链接,所以 52689 需要根据第一页提供的链接动态更改。
我需要在第二页获取所有数据,如标题、描述等。
我在想的是 for 循环,但它对我不起作用。我在谷歌上搜索,但没有人和我有同样的问题。请帮帮我
import scrapy
class SalesItemSpider(scrapy.Spider):
name = 'sales_item'
allowed_domains = ['www.sample.com']
start_urls = ['www.sample.com/view-all.html', 'www.sample.com/productpage.00001.html']
def parse(self, response):
for product_item in response.css('li.product-item'):
item = {
'URL': product_item.css('a::attr(href)').extract_first(),
}
yield item`
【问题讨论】:
-
Scrapy 不必
yield项目。它可以yieldRequest() 带有 url 和函数名称,这将从这个 url 中抓取。这样parse可以从主页抓取网址并使用Request()运行其他功能以从这些网址中抓取。您应该拥有所有文档 - docs.scrapy.org - 如果您对抓取感兴趣,那么您应该从第一页到最后一页阅读此文档。
标签: python web-scraping scrapy