我曾经知道您需要使用诸如selenium之类的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中
介绍的方法之一来代替 。
问题内容: 我一开始就知道您需要使用诸如硒之类的webtoolkit来自动进行抓取。 我将如何能够单击Google Play商店上的下一个按钮,以便仅出于我的大学目的刮取评论! 我已经更新了代码,一次又一次地重复了40个项目。for循环出了什么问题? 似乎正在更新的源代码没有传递到xpath,这就是为什么它返回相同的40个项目的原因 问题答案: 我会做这样的事情: 不过,最好不要等待固定的时间。因
问题内容: 我正在尝试将Scraper与Selenium结合使用,以便能够与javascript进行交互,并且仍然具有Scrapy提供的强大的抓取框架。我编写了一个脚本,该脚本访问http://www.iens.nl,在搜索栏中输入“阿姆斯特丹”,然后成功单击搜索按钮。单击搜索按钮后,我希望scrapy从新呈现的页面中检索元素。不幸的是scrapy不会返回任何值。 这是我的代码如下所示: “属性”
我正在开发一个web服务应用程序,尽管服务的运行正常,但我认为开发、测试和修复代码所花费的时间是在浪费。以下是我正在做的: > 我在Eclipse中有一个普通的java项目,在那里我有web服务的所有代码。我在构建路径中添加了一个javax.servlet.jar库,并使用中的接收请求,并以JSON格式打印结果。我使用main方法来测试和修复代码的某些部分 当我确信我的代码没有问题时,我会导航到工
我遵循了git hub的一个简单程序-https://github.com/dequelabs/axe-selenium-java } 执行时,得到如下错误- 你能告诉我,我在这里缺少什么吗?我的js文件在下面的位置。示例截图-
我试图执行一个测试在移动设备但我有下一个错误 Chrome版本:83.04103.101 我正在寻找解决方案,但什么也没找到。
问题内容: 我必须登录SnapSurveys并每月下载20多个文件。现在已经是一个繁琐的过程,现在我必须每周执行一次,而手工完成将变得很繁琐,所以我想实现它的自动化并安装了Selenium来做到这一点。我已经使用SeleniumIDE(在FireFox中)跟踪了整个过程,所以我知道我想做的事情以及如何做的基础知识,但是,我遇到了一个难以理解的砖墙,试图理解该网页。实现它的结构。 使用Chrome和