嗨,大家好我在抓数据方面很新,我尝试过基本的。但我的问题是我有2个网页,我需要抓住相同的域名
我的逻辑是,第一页www.sample.com/view-all.html
*这个页面打开所有项目列表,我需要得到每个项目的所有href attr。
第二页www.sample.com/productpage.52689.html
*这是来自第一页的链接,因此52689需要根据第一页提供的链接动态更改。
我需要在第二页上获取标题,描述等所有数据。
我在想的是循环,但它不适合我。我在谷歌搜索,但没有人像我一样有问题。请帮我
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`
在parse
内你可以用网址和功能名称yield
Request()
来刮掉这个不同功能的网址
def parse(self, response):
for product_item in response.css('li.product-item'):
url = product_item.css('a::attr(href)').extract_first()
# it will send `www.sample.com/productpage.52689.html` to `parse_subpage`
yield scrapy.Request(url=url, callback=self.parse_subpage)
def parse_subpage(self, response):
# here you parse from www.sample.com/productpage.52689.html
item = {
'title': ...,
'description': ...
}
yield item
在Request
和Scrapy documentation寻找its tutorial
还有
response.follow(url, callback=self.parse_subpage)
这会自动将www.sample.com
添加到网址,这样你就不必自己动手了
Request(url = "www.sample.com/" + url, callback=self.parse_subpage)
见A shortcut for creating Requests
如果你有兴趣刮,那么你应该从第一页到最后一页阅读docs.scrapy.org。