2016-02-04 106 views
1

它看起來像python無法找到文本時,它被標記爲display = none,我該怎麼辦才能解決這個問題?Python沒有獲取html標籤之間的文本

這裏是我的代碼

import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.domcop.com/domains/great-expired-domains/') 
soup = BeautifulSoup(r.text, 'html.parser') 
data = soup.find('div', {'id':'all-domains'}) 
data.text 

代碼返回[]

我也嘗試過使用XPath:

from lxml import etree 

data = etree.HTML(r.text) 
anchor = data.xpath('//div[@id="all-domains"]/text()') 

它返回同樣的事情...

回答

1

是,與id="all-domains"元素是空的,因爲它是由JavaScript執行動態設置在瀏覽器中編輯。使用requests你只能得到沒有「動態」部分的初始HTML頁面,可以這麼說。要獲取所有域,我只需遍歷表格行並提取域鏈接文本。工作樣本:

import requests 
from bs4 import BeautifulSoup 

r = requests.get('https://www.domcop.com/domains/great-expired-domains/', 
       headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.97 Safari/537.36"}) 

soup = BeautifulSoup(r.text, 'html.parser') 
for domain in soup.select("tbody#domcop-table-body tr td a.domain-link"): 
    print(domain.get_text()) 

打印:

u2tourfans.com 
tvadsview.com 
gfanatic.com 
blucigs.com 
... 
twply.com 
sweethomeparis.com 
vvchart.com 
+0

好了,感謝您的!有沒有其他的Python可以讀取這個文本的庫? – Charles

+0

@Charles是否指'all-domains'元素中的文字?如果你仍然需要這個,通過'selenium'瀏覽一下瀏覽器自動化。但是,我認爲您可以使用答案中提供的解決方案。 – alecxe

+0

您的解決方案將在這種情況下,我只是想知道。 Selenium是否僅適用於可見對象,因爲它就像是在瀏覽網頁? – Charles

相關問題