在Scrapy中使用Selenium遍历链接
我正在学习使用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
连接起来。