这是我的蜘蛛我只能得到第一个元素结果(Praxy Paris)。我需要在最多评论页面中获取所有数据。怎么做到的?
from scrapy.spider import BaseSpider
from selenium import webdriver
class SeleSpider(BaseSpider):
name = "see"
start_urls = ['https://www.facebook.com/HRCMallOfAmerica/reviews']
def __init__(self):
self.driver = webdriver.Firefox()
def parse(self, response):
self.driver.get(response.url)
self.driver.find_element_by_link_text("MOST RECENT").click()
self.driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(2)
elem = self.driver.find_elements_by_id("most_recent_reviews_list")
for i in elem:
x = i.find_element_by_tag_name("strong").text
print x
下一段代码尝试获取最新页面的页面源,但它只显示请求的页面。
通过selenium点击功能处理链接后,我需要使用python的html代码。我尝试了但是它会将html代码抛出driver.get(url)
的网址。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import urllib,urllib2
f = open('x.html','w')
driver = webdriver.Firefox()
url = "https://www.facebook.com/HRCMallOfAmerica/reviews"
driver.get(url)
driver.find_element_by_link_text("MOST RECENT").click()
r=urllib.urlopen(url) // For URL what I have to insert
x=r.read()
print x
答案 0 :(得分:1)
<强>问题强>
代码中的问题是,单击下一页的按钮时,网址不会更改。您的代码采用相同的网址并返回相同的第一页。
<强>解决方案强>
将按钮单击方法保持在循环内(在覆盖所有页面之前应该为true)。
而不是
r = urllib2.urlopen(url)
写
r = urllib2.urlopen(driver.page_source)
那应该做的工作。