这种与scrapy合并的硒只能解决一个问题 -
我需要每次使用页面生成的新源代码更新// Currently starts at line #464:
type SearchOptions struct {
...
// TODO: cursor, offset, maybe others.
}
,否则会一次又一次地返回重复结果。
sites = response.xpath()
答案 0 :(得分:1)
点击从Selector
instance传递当前页面来源后,您需要在循环中创建新的.page_source
:
from scrapy.selector import Selector
self.browser.implicitly_wait(30)
for i in range(0,200):
time.sleep(20) # TODO: a delay like this doesn't look good
button = self.browser.find_element_by_xpath("/html/body/div[4]/div[6]/div[1]/div[2]/div[2]/div[1]/div[2]/button[1]/div[2]/div/div")
button.click()
sel = Selector(text=self.browser.page_source)
sites = sel.xpath('//div[@class="single-review"]/div[@class="review-header"]')
for site in sites:
item = Product()
item['title'] = site.xpath('.//div[@class="review-info"]/span[@class="author-name"]/a/text()').extract()
yield item
请注意,您只需要调用implicitly_wait()
一次 - 它不会立即添加延迟 - 它只会指示selenium
在搜索元素时等待X秒。
另外,我怀疑你真的需要time.sleep(20)
电话。相反,您可能希望开始使用Explicit Waits
。