基于我对网络搜索的不了解我已经为我找到了一个非常复杂的问题,我会尽力解释我能做的最好的事情(因此我在我的帖子中接受建议或编辑) )。
我开始使用网络抓取框架' Scrapy '很久以前我的网页编写,它仍然是我现在使用的那个。最近,我遇到了this website,发现我的框架( Scrapy )无法遍历页面,因为该网站使用gradle
(#)来加载数据(下一页)。然后我发了一篇关于那个问题的帖子(还不知道主要问题):my post
之后,我意识到我的框架无法在没有Fragment URLs
解释器或浏览器模仿的情况下完成它,因此他们提到了JavaScript
库。我尽可能多地阅读该库(即example1,example2,example3和example4)。我还发现这个StackOverflow's post提供了一些关于我的问题的跟踪。
所以最后,我最大的问题是:
1 - 有没有办法在上面显示的网站上使用Selenium和scrapy迭代/收益? 到目前为止,这是我正在使用的代码,但不起作用......
修改
Selenium
所以这主要是我的问题。我几乎可以肯定我所做的并不是最好的方式,所以我做了第二个问题。为避免将来出现这类问题,我提出了第三个问题。
2 - 如果第一个问题的答案是否定的,我该如何解决这个问题?我打开了另一种方式,否则
3 - 任何人都可以告诉我或向我展示我可以学习如何解决/结合使用javaScript和Ajax的webscraping的页面吗?如今更多是使用JavaScript和Ajax脚本加载内容的网站
非常感谢提前!
答案 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搜索内容。
以下是其中一些(但最常用的):
启动后,您可以启动机器人并解析网页的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!