我无法弄清楚如何按顺序制作scrapy抓取链接 我有一个带有文章的页面,每个页面都有一个标题,但文章与标题不匹配 另外在settings.py中我添加了:
DEPTH_PRIORITY = 1
SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'
我有这样的事情:
class Getgot(Spider):
name = "getem"
allowed_domains = ["somesite.us"]
start_urls = ["file:local.html"]
el = '//div[@article]'
def parse(self,response):
hxs = HtmlXPathSelector(response)
s = hxs.select('//article')
filename = ("links.txt")
filly = open(filename, "w")
for i in s:
t = i.select('a/@href').extract()
filly.write(str(t[0])+'\n')
yield Request(str(t[0]),callback=self.parse_page)
def parse_page(self,res):
hxs = HtmlXPathSelector(res)
s = hxs.select('//iframe').extract()
if s:
filename = ("frames.txt")
filly = open(filename, "a")
filly.write(str(s[0])+'\n')
else:
filename = ("/frames.txt")
filly = open(filename, "a")
filly.write('[]\n')
答案 0 :(得分:0)
我不确定我是否理解您的问题和代码是如何相关的。标题在哪里?
一些提示:1)使用最新版本更新您的scrapy语法2)不要写蜘蛛中的任何文件,将其写入管道或导出Feed。 3)如果您需要将数据从一个函数传输到下一个函数,请使用元属性。
def parse(self, response):
for link in response.xpath("//article/a/@href").extract():
yield Request(link, callback=self.parse_page, meta={'link':link})
def parse_page(self, response):
for frame in response.xpath("//iframe").extract():
item = MyItem()
item['link'] = response.meta['link']
item['frame'] = frame
yield item
然后将其导出到csv或json或其他任何内容,以将链接和框架存储在一起。