删除HTML和JavaScript
我正在做一个项目,在这个项目中,我需要抓取几个网站,并从中收集不同种类的信息。文本、链接、图像等信息 我正在为此使用Python。为此,我在HTML页面上尝试了BeautifulSoup,但在解析包含大量JavaScript的站点时,我被卡住了,因为这些文件的大部分信息都存储在删除HTML和JavaScript,javascript,python,parsing,web-scraping,web-crawler,Javascript,Python,Parsing,Web Scraping,Web Crawler,我正在做一个项目,在这个项目中,我需要抓取几个网站,并从中收集不同种类的信息。文本、链接、图像等信息 我正在为此使用Python。为此,我在HTML页面上尝试了BeautifulSoup,但在解析包含大量JavaScript的站点时,我被卡住了,因为这些文件的大部分信息都存储在标记中 有没有办法做到这一点?首先,从页面中删除和解析JS并不是件小事。但是,如果改用无头web客户端,它可以大大简化,就像普通浏览器一样为您解析所有内容。 唯一的区别是它的主界面不是GUI/HMI,而是API 例如,您可
标记中
有没有办法做到这一点?首先,从页面中删除和解析JS并不是件小事。但是,如果改用无头web客户端,它可以大大简化,就像普通浏览器一样为您解析所有内容。
唯一的区别是它的主界面不是GUI/HMI,而是API 例如,您可以与支持无头模式的Chrome或Firefox一起使用
要获得更完整的无头浏览器列表,请查看。如果页面加载中涉及大量javascript动态加载,那么事情会变得更复杂 基本上,您有3种从网站抓取数据的方法:
- 使用浏览器开发人员工具查看页面加载中的请求。然后在爬虫程序中模拟这些请求。您可能需要和模块的帮助
- 使用利用真实浏览器的工具,如。在这种情况下,您不关心页面是如何加载的——您将获得真实用户看到的内容。注意:您也可以使用浏览器
- 查看网站是否提供API(例如)
希望对您有所帮助。要开始使用selenium and BeautifulSoup: 使用npm(节点包管理器)安装phantomjs: 安装selenium:
pip install selenium
然后像这样获取结果页面,并像往常一样使用beautifulSoup对其进行解析:
from BeautifulSoup4 import BeautifulSoup as bs
from selenium import webdriver
client = webdriver.PhantomJS()
client.get("http://foo")
soup = bs(client.page_source)
一种非常快速的方法是遍历所有标记并获取
textContent
这是JS代码段:
page =""; var all = document.getElementsByTagName("*"); for (tag of all) page = page + tag.textContent;
或者在selenium/python中:
import selenium
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://ranprieur.com")
pagetext = driver.execute_script('page =""; var all = document.getElementsByTagName("*"); for (tag of all) page = page + tag.textContent; return page;')
另一个ressource:顺便说一句,selenium比Ghost轻得多。我可以进行Ghost工作并加载页面,但我应该怎么做才能从中获得整个网页。文档描述了一个函数get_页面,但它甚至不在代码中。
import selenium
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://ranprieur.com")
pagetext = driver.execute_script('page =""; var all = document.getElementsByTagName("*"); for (tag of all) page = page + tag.textContent; return page;')