Parsing scrapy plus selenium用于处理动态多页--无法继续单击
我正在使用Scrapy plus selenium从动态页面中复制数据。以下是我的爬行器代码:Parsing scrapy plus selenium用于处理动态多页--无法继续单击,parsing,selenium,click,scrapy,multipage,Parsing,Selenium,Click,Scrapy,Multipage,我正在使用Scrapy plus selenium从动态页面中复制数据。以下是我的爬行器代码: class asbaiduSpider(CrawlSpider): name = 'apps_v3' start_urls = ["http://as.baidu.com/a/software?f=software_1012_1"] rules = (Rule(SgmlLinkExtractor(allow=("cid=(50[0-9]|510)&am
class asbaiduSpider(CrawlSpider):
name = 'apps_v3'
start_urls = ["http://as.baidu.com/a/software?f=software_1012_1"]
rules = (Rule(SgmlLinkExtractor(allow=("cid=(50[0-9]|510)&s=1&f=software_1012_1", )), callback='parse_item',follow=True),)
def __init__(self):
CrawlSpider.__init__(self)
chromedriver = "/usr/bin/chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
self.driver = webdriver.Chrome(chromedriver)
def __del__(self):
self.driver.stop()
CrawlSpider.__del__(self)
def parse_item(self,response):
hxs = Selector(response)
#links= hxs.xpath('//span[@class="tit"]/text()').extract()
links= hxs.xpath('//a[@class="hover-link"]/@href').extract()
for link in links:
#print 'link:\t%s'%link
time.sleep(2)
return Request(link,callback=self.parse_page)
def parse_page(self,response):
self.driver.get(response.url)
time.sleep(2.5)
app_comments = ''
num = len(self.driver.find_elements_by_xpath("//section[@class='s-index-page devidepage']/a"))
print 'num:\t%s'%num
if num == 8:
print 'num====8 ohohoh'
while True:
link = self.driver.find_element_by_link_text('下一页')
try:
link.click()
except:
break
问题是,每次单击page2后,它都会退出当前页面。但我需要抓取第3页、第4页等等。
需要解析的页面如下所示:
这是中文的,很抱歉给您带来不便
我需要翻开最下面的几页,刮去评论数据。
这个问题我已经解决了两天了。我真的很感谢你的帮助。
谢谢你…如果我理解正确,这是你的情况 翻开一页 从页面中找到一些链接并逐一访问 访问每个链接时提取数据。 如果我的理解是正确的。我想你可以继续下面的逻辑 打开页面 获取所有链接并将其保存到数组中。 现在使用webdriver分别打开每个页面并完成您的工作。
如果答案对您有帮助,请选择正确答案。这是一种感谢他人在这里帮助你的方式:事实上,我需要这样:1打开一个页面2找到一些链接让我们说从页面中找到链接2并访问它们3而从链接2访问每个页面,找到一些链接莱特说链接3并跟随它们4而从链接3访问页面,我需要在url保持不变的情况下单击一些按钮,并刮取一些数据。@当我尝试直接刮取最后一页时,它运行良好。经过两层跳转后,在抓取最终页面时,单击第二个按钮后无法继续。我想parse_page func可能有错误。但是我不知道如何更正。@talisa-对于您的问题,只需编写一个逻辑并使用适当的java集合来存储URL,这样您就可以返回到任何页面。现在对你来说,一切都是关于逻辑的。关于函数parse_页面,如果可能,请尝试通过xpath或样式或CSSSelector或name获取元素(如果可能),而不是self.driver.find_element_by_link_text-中文中的link text。但这只是一个想法,其他一切看起来都很好。否则就调试你的代码。@A很遗憾,我不熟悉java。有没有办法用python解决这个问题?