Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 无头Chrome:网站将内容划分为文本、字符串或ASCII_Web Scraping_Ascii_Chromium_Headless_Google Chrome Headless - Fatal编程技术网

Web scraping 无头Chrome:网站将内容划分为文本、字符串或ASCII

Web scraping 无头Chrome:网站将内容划分为文本、字符串或ASCII,web-scraping,ascii,chromium,headless,google-chrome-headless,Web Scraping,Ascii,Chromium,Headless,Google Chrome Headless,我想从动态加载的网站上抓取文本,我需要动态抓取。由于动态加载,诸如$lynx--dump google.com之类的选项似乎不起作用。为此,我使用了无头铬合金 $ Chrome --headless --disable-gpu --no-sandbox --run-all-compositor-stages-before-draw --virtual-time-budget=1000 --window-size=1200,3000 --screenshot http://mtv.com 但我找

我想从动态加载的网站上抓取文本,我需要动态抓取。由于动态加载,诸如
$lynx--dump google.com
之类的选项似乎不起作用。为此,我使用了无头铬合金

$ Chrome --headless --disable-gpu --no-sandbox --run-all-compositor-stages-before-draw --virtual-time-budget=1000 --window-size=1200,3000 --screenshot http://mtv.com
但我找不到从网站上删除文本的方法。我可以使用所有的动态抓取选项来获取特定div的文本,例如一些类

如何从动态加载的网站中切换文本?

使用无头铬合金动态加载的示例结果 最好的方法是直接从网站中提取文本

如果找不到其他方法,请使用OCR(光学字符识别)提取文本,以及问题中提供的无头镀铬解决方案

屏幕截图中的坏选项OCR

$ brew install imagemagick

$ brew install tesseract

$ convert input.png -resize 400% -type Grayscale input.tif

$ tesseract -l eng input.tif output


在这里,您可以使用正则表达式查找单个文本片段。否则,OCR输出是准确的,但没有组织,这使得以后很难使用,因为原型识别不准确。

如果您可以为Node.JS编写JS,您可以尝试使用Node.JS库来管理headless Chrome:

“严格使用”;
const puppeter=require('puppeter');
(异步函数main(){
试一试{
const browser=wait puppeter.launch({headless:true});
const[page]=wait browser.pages();
等待页面。转到('http://www.mtv.com/');
常量数据=等待页面。评估(()=>{
return document.querySelector('div.header').innerText;
});
控制台日志(数据);
等待浏览器关闭();
}捕捉(错误){
控制台错误(err);
}
})();
输出:

teen mom 2

下面的示例呼应了
b'teen mom 2'
,演示了Python Selenium使用下面的Headless Chome驱动程序

from selenium import webdriver
import os
import locale
os.environ["PYTHONIOENCODING"] = "utf-8"
myLocale=locale.setlocale(category=locale.LC_ALL, locale="en_GB.UTF-8")

url = "http://mtv.com"
driver = webdriver.Chrome('/Users/hhh/Downloads/chromedriver')
driver.get(url)
SpecialPrice =driver.find_element_by_xpath("//div[@class='header']")

myText=SpecialPrice.text
print(myText.encode('utf-8', errors='ignore'))