我的目标:
到目前为止,我已经尝试了两种方法,但都没有效果。有人能指出我正确的方向吗?
(1)使用LinkExtractor获取所有项链接,可能是错误:排除下一个链接,因此没有next_page_url
class urllink(CrawlSpider):
name = "urllink"
allowed_domains = ['url.com']
start_urls = [
'http://www.url.com/',
]
rules = [
Rule(
LinkExtractor(
allow = ('items/detail/-/id='),
deny = (),
canonicalize=True,
unique=True
),
follow=False,
callback="parse_items"
)
]
def parse_items(self, response):
yield {
'title':response.css("cite::text").extract_first(),
}
next_page_url = response.css('.next a::attr(href)').extract_first()
if next_page_url is not None:
yield scrapy.Request(response.urljoin(next_page_url))
(2)在主页面废料中调用next_page_url,将项目链接发送到项目废料。但有些事情是错的,不知道在哪里。
class urlcom(CrawlSpider):
name = "urlcom3"
allowed_domains = ['url.com']
start_urls = [
'http://www.url.com',
]
def parse_links(self, response):
links = response.css('ul[class = "cmn-list-product01"] a::attr(href)').extract()
for link in links:
print(link)
scrapy.Request(link, call_back = "parse_items")
next_page_url = response.css('.next a::attr(href)').extract_first()
if next_page_url is not None:
yield scrapy.Request(response.urljoin(next_page_url))
def parse_items(self, content):
yield {
'title':content.css("cite::text").extract_first(),
}
答案 0 :(得分:0)
我自己终于解决了这个问题,结果却是小错误。如果有人遇到类似的问题,这就是我犯的错误。
我选择了第二个代码作为基础。
1)Scrapy的第一只蜘蛛必须命名为#34;解析"
def解析(自我,回应):
2)使用yield和callback将链接传递给第二项蜘蛛
yield scrapy.Request(link,callback = self.parse_items)
希望这会有所帮助。