我一开始就知道您需要使用诸如硒之类的webtoolkit来自动进行抓取。
我将如何能够单击Google Play商店上的下一个按钮,以便仅出于我的大学目的刮取评论!
import scrapy
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from urlparse import urljoin
from selenium import webdriver
import time
class Product(scrapy.Item):
title = scrapy.Field()
class FooSpider(CrawlSpider):
name = 'foo'
start_urls = ["https://play.google.com/store/apps/details?id=com.gaana&hl=en"]
def __init__(self, *args, **kwargs):
super(FooSpider, self).__init__(*args, **kwargs)
self.download_delay = 0.25
self.browser = webdriver.Chrome(executable_path="C:\chrm\chromedriver.exe")
self.browser.implicitly_wait(60) #
def parse(self,response):
self.browser.get(response.url)
sites = response.xpath('//div[@class="single-review"]/div[@class="review-header"]')
items = []
for i in range(0,200):
time.sleep(20)
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()
self.browser.implicitly_wait(30)
for site in sites:
item = Product()
item['title'] = site.xpath('.//div[@class="review-info"]/span[@class="author-name"]/a/text()').extract()
yield item
我已经更新了代码,一次又一次地重复了40个项目。for循环出了什么问题?
似乎正在更新的源代码没有传递到xpath,这就是为什么它返回相同的40个项目的原因
我会做这样的事情:
from scrapy import CrawlSpider
from selenium import webdriver
import time
class FooSpider(CrawlSpider):
name = 'foo'
allow_domains = 'foo.com'
start_urls = ['foo.com']
def __init__(self, *args, **kwargs):
super(FooSpider, self).__init__(*args, **kwargs)
self.download_delay = 0.25
self.browser = webdriver.Firefox()
self.browser.implicitly_wait(60)
def parse_foo(self.response):
self.browser.get(response.url) # load response to the browser
button = self.browser.find_element_by_xpath("path") # find
# the element to click to
button.click() # click
time.sleep(1) # wait until the page is fully loaded
source = self.browser.page_source # get source of the loaded page
sel = Selector(text=source) # create a Selector object
data = sel.xpath('path/to/the/data') # select data
...
不过,最好不要等待固定的时间。因此time.sleep(1)
,您可以使用http://www.obeythetestinggoat.com/how-
to-get-selenium-to-wait-for-page-load-after-a-
click.html中
介绍的方法之一来代替 。
问题内容: 我曾经知道您需要使用诸如selenium之类的webtoolkit来自动执行抓取。 我将如何能够单击Google Play商店上的下一个按钮,以便仅出于我的大学目的刮取评论! 我已经更新了代码,一次又一次重复地给了我40个项目。for循环怎么了? 似乎正在更新的源代码没有传递到xpath,这就是为什么它返回相同的40个项目的原因 问题答案: 我会做这样的事情: 不过,最好不要等待固定的
我使用JavaSelenium项目进行网页自动化。网页包含了许多多级的影子根DOM元素,我无法使用selenium方法与它们交互。 深度css(不适用于最新的chrome浏览器) 执行人。(这真的很乏味,维护起来也很复杂) 如果你知道除了上面列出的任何其他解决方案,我可以在SeleniumJava框架中实现,请传递解决方案。提前感谢!。
我想使用Cucumber与SoapUI和Selenium链接,以创建一个自动化功能测试。我只找到了一个关于它的网站,描述了首先我必须创建一个SoapUI项目并将其保存为一个。xml文件。然后,我应该使用Cucumber和Selenium将该文件包含到测试项目中。 我的第一个问题是我需要做什么配置?(在任何配置中使用xml.pom文件时) 我的第二个也是最后一个问题是:如果我每晚都和Jenkins一
我正在开发一个web服务应用程序,尽管服务的运行正常,但我认为开发、测试和修复代码所花费的时间是在浪费。以下是我正在做的: > 我在Eclipse中有一个普通的java项目,在那里我有web服务的所有代码。我在构建路径中添加了一个javax.servlet.jar库,并使用中的接收请求,并以JSON格式打印结果。我使用main方法来测试和修复代码的某些部分 当我确信我的代码没有问题时,我会导航到工
我试图从以下代码中找到字段名“用户设置已成功更新”: 我在C#中使用的代码是 基本上,我试图澄清,如果用户更新成功与否,所以如果成功,我希望代码返回文本“用户设置更新成功”。但我面临的问题是,即使更新成功,它也无法返回值,并抛出异常。