在Scrapy中使用Selenium遍历链接

3 投票
1 回答
761 浏览
提问于 2025-04-18 02:41

我正在学习使用selenium和scrapy进行网页抓取。我有一个页面,上面有一系列链接。我想点击第一个链接,访问那个页面抓取内容,然后再返回到之前的页面(也就是有链接的那个页面),接着点击第二个链接,继续抓取,重复这个过程,直到所有想要的链接都抓取完为止。 我现在只能点击第一个链接,然后我的抓取程序就停止了。 我该怎么做才能继续抓取第二个链接和后面的链接呢?

我的爬虫代码是这样的:

class test(InitSpider):
    name="test"
    start_urls = ["http://www.somepage.com"]

    def __init__(self):
        InitSpider.__init__(self)
        self.browser = webdriver.Firefox()

    def parse(self,response):
        self.browser.get(response.url)
        time.sleep(2)
        items=[]
        sel = Selector(text=self.browser.page_source)
        links = self.browser.find_elements_by_xpath('//ol[@class="listing"]/li/h4/a')
        for link in links:
            link.click()
            time.sleep(10)
            #do some crawling and go back and repeat the process.
            self.browser.back()

谢谢

1 个回答

1

你可以换个方法:在循环中对每个链接的 href 调用 browser.get()

links = self.browser.find_elements_by_xpath('//ol[@class="listing"]/li/h4/a')
for link in links:
    link = link.get_attribute('href')
    self.browser.get(link)
    # crawl

如果链接是相对路径,你需要把它和 http://www.somepage.com 连接起来。

撰写回答