BeautifulSoup Div Class返回空

时间:2017-12-10 10:15:04

标签: string python-3.x class beautifulsoup

我检查了类似的问题,但找不到解决方案......

我正试图从以下页面中缩短额外旅行时间(46):[{3}}

我尝试了2种方法(Xpath& find class),但两者都给出了空的回报。

import requests
from bs4 import BeautifulSoup
from lxml.html import fromstring

page = requests.get("https://www.tomtom.com/en_gb/trafficindex/city/istanbul")
tree = fromstring(page.content)

soup = BeautifulSoup(page.content, 'html.parser')



#print([type(item) for item in list(soup.children)])

html = list(soup.children)[2]

g_data = soup.find_all("div", {"class_": "big.ng-binding"})

congestion = tree.xpath("/html/body/div/div[2]/div[2]/div[2]/section[2]/div/div[2]/div/div[2]/div/div[2]/div[1]/div[1]/text()")
print(congestion)
print(len(g_data))

我错过了一些明显的东西吗?

非常感谢帮忙!

1 个答案:

答案 0 :(得分:1)

仅仅{1}}不足以实现它。该网站使用JavaScript生成内容,因此您必须使用其他工具,例如class="text-big ng-binding"

div = soup.find_all('div', attrs={'class' : 'text-big ng-binding'})
result = div[0].text

我可以看到两种方法来提取额外的时间:

1.使用div寻找Per day

div = soup.find_all(text=re.compile('Per day'))
result = div.find_previous('div').find_previous('div').text

2.首先找到包含RowVectorXcd CSD(n_Epochs, fftsize); for(int j = 0; j < fftsize; j++) { std::complex<double> cospectrum = freqvec(j).real() * freqvec2(j).real() + freqvec(j).imag() * freqvec2(j).imag() ; std::complex<double> quadspectrum = freqvec(j).real() * freqvec2(j).imag() - freqvec(j).imag() * freqvec2(j).real() ; std::cout << "cospectrum:"<<cospectrum<< std::endl; CSD(j) = sqrt( pow( cospectrum, 2 ) + pow( quadspectrum, 2) ) ; 文本的{{1}},然后再进行两次分组

{{1}}