如何使用Selenium在scrapy中生成片段URL?

时间:2017-10-06 11:02:03

标签: javascript python selenium web-scraping scrapy

基于我对网络搜索的不了解我已经为我找到了一个非常复杂的问题,我会尽力解释我能做的最好的事情(因此我在我的帖子中接受建议或编辑) )。

我开始使用网络抓取框架' Scrapy '很久以前我的网页编写,它仍然是我现在使用的那个。最近,我遇到了this website,发现我的框架( Scrapy )无法遍历页面,因为该网站使用gradle(#)来加载数据(下一页)。然后我发了一篇关于那个问题的帖子(还不知道主要问题):my post

之后,我意识到我的框架无法在没有Fragment URLs解释器或浏览器模仿的情况下完成它,因此他们提到了JavaScript库。我尽可能多地阅读该库(即example1example2example3example4)。我还发现这个StackOverflow's post提供了一些关于我的问题的跟踪。

所以最后,我最大的问题是:

1 - 有没有办法在上面显示的网站上使用Selenium和scrapy迭代/收益? 到目前为止,这是我正在使用的代码,但不起作用......

修改

Selenium

所以这主要是我的问题。我几乎可以肯定我所做的并不是最好的方式,所以我做了第二个问题。为避免将来出现这类问题,我提出了第三个问题。

2 - 如果第一个问题的答案是否定的,我该如何解决这个问题?我打开了另一种方式,否则

3 - 任何人都可以告诉我或向我展示我可以学习如何解决/结合使用javaScript和Ajax的webscraping的页面吗?如今更多是使用JavaScript和Ajax脚本加载内容的网站

非常感谢提前!

3 个答案:

答案 0 :(得分:3)

Selenium是抓取动态数据的最佳工具之一。您可以在任何Web浏览器中使用selen来获取从脚本加载的数据。这与浏览器点击操作完全相同。但我不喜欢它。< / p>

要获取动态数据,您可以使用scrapy + splash组合。从scrapy开始,你将获得所有静态数据并为其他动态内容添加闪存。

答案 1 :(得分:1)

你有没有看过 BeautifulSoup ?这是一个非常受欢迎的python web抓取库。至于JavaScript,我会推荐像 Cheerio 这样的东西(如果你在JavaScript中要求使用抓取库)

如果您的意思是网站使用HTTP请求加载内容,您可以尝试使用 requests 库等手动操作。

希望这有帮助

答案 2 :(得分:1)

您绝对可以单独使用Selenium来废弃带有动态内容的网页(例如加载AJAX)。

Selenium将依靠WebDriver(基本上是一个Web浏览器)通过Internet搜索内容。

以下是其中一些(但最常用的)

  • ChromeDriver
  • PhantomJS(我最喜欢的)
  • 火狐

启动后,您可以启动机器人并解析网页的html内容。

我在下面使用Python和ChromeDriver包含了一个最小的工作示例:

from selenium import webdriver
from selenium.webdriver.common.by import By


driver = webdriver.Chrome(executable_path='chromedriver')
driver.get('https://www.google.com')
# Then you can search for any element you want on the webpage
search_bar = driver.find_element(By.CLASS_NAME, 'tsf-p')
search_bar.click()
driver.close()

有关详细信息,请参阅the documentation