我一直在尝试实现一个解析函数。
基本上我通过scrapy shell发现了
response.xpath('//*[@id="PagerAfter"]/a[last()]/@href')).extract()[0]
给我的网址指示我到下一页。所以我尝试按照next_page的说明操作。我看了一下堆栈溢出,似乎每个人都使用规则(LinkExtractor ......我不相信我需要使用它。我很确定我做的完全错了。我原来有一个for循环在start_urls中添加了我想要访问的每个链接,因为我知道它全部采用* p1.html,* p2.html等形式,但我想让它变得更聪明。
def parse(self, response):
items = []
for sel in response.xpath('//div[@class="Message"]'):
itemx = mydata()
itemx['information'] = sel.extract()
items.append(itemx)
with open('log.txt', 'a') as f:
f.write('\ninformation: ' + itemx.get('information')
#URL of next page response.xpath('//*[@id="PagerAfter"]/a[last()]/@href').extract()[0]
next_page = (response.xpath('//*[@id="PagerAfter"]/a[last()]/@href'))
if (response.url != response.xpath('//*[@id="PagerAfter"]/a[last()]/@href')):
if next_page:
yield Request(response.xpath('//*[@id="PagerAfter"]/a[last()]/@href')[0], self.parse)
return items
但不起作用我得到了
next_page = (response.xpath('//*[@id="PagerAfter"]/a[last()]/@href'))
^SyntaxError: invalid syntax
错误。另外我知道屈服请求部分是错误的。我想以递归方式调用并递归地将每个页面的每个scrape添加到列表项中。
谢谢!