从页面中提取 javascript 启用的数据
Extracting javascript enabled data from page
我正在尝试提取此 link 中的彩色文本。我在 python 中使用 BeautifulSoup。代码如下:
import time, urllib2, re
from bs4 import BeautifulSoup
url='http://de.vroniplag.wikia.com/wiki/Aaf/008'
def gethtml(link):
time.sleep(2)
req = urllib2.Request(link, headers={'User-Agent': "Magic Browser"})
con = urllib2.urlopen(req)
html = con.read()
return html
soup=BeautifulSoup(gethtml(url),'html.parser')
print soup.findAll('span', attrs={"class": re.compile('fragmark')})
但是返回的结果是空的。我如何更改它才能使其正常工作?
更新:
我使用的是chromedriver,代码如下:
from selenium import webdriver
import os
chromedriver = "./chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008')
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'):
print(tag.text)
driver.quit()
但是浏览器打开了。结果没有出现。我关闭浏览器然后发生错误。
您需要使用可以解释的库 javascript。例如使用 selenium
因为那些带有 fragmark1
, fragmark2
, ... 的元素是由 javascript.
创建的
from selenium.webdriver import Chrome as Driver
# Replace with `Chrome` with your system browser
driver = Driver()
driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008')
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'):
print(tag.text)
我正在尝试提取此 link 中的彩色文本。我在 python 中使用 BeautifulSoup。代码如下:
import time, urllib2, re
from bs4 import BeautifulSoup
url='http://de.vroniplag.wikia.com/wiki/Aaf/008'
def gethtml(link):
time.sleep(2)
req = urllib2.Request(link, headers={'User-Agent': "Magic Browser"})
con = urllib2.urlopen(req)
html = con.read()
return html
soup=BeautifulSoup(gethtml(url),'html.parser')
print soup.findAll('span', attrs={"class": re.compile('fragmark')})
但是返回的结果是空的。我如何更改它才能使其正常工作?
更新:
我使用的是chromedriver,代码如下:
from selenium import webdriver
import os
chromedriver = "./chromedriver"
os.environ["webdriver.chrome.driver"] = chromedriver
driver = webdriver.Chrome(chromedriver)
driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008')
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'):
print(tag.text)
driver.quit()
但是浏览器打开了。结果没有出现。我关闭浏览器然后发生错误。
您需要使用可以解释的库 javascript。例如使用 selenium
因为那些带有 fragmark1
, fragmark2
, ... 的元素是由 javascript.
from selenium.webdriver import Chrome as Driver
# Replace with `Chrome` with your system browser
driver = Driver()
driver.get('http://de.vroniplag.wikia.com/wiki/Aaf/008')
for tag in driver.find_elements_by_css_selector('[class^=fragmark]'):
print(tag.text)