如果网页上有<div class="class1">和<p class="class1">,然后soup.findAll(True, 'class1')就会发现他们两个.
<p class="class1 class2">但是,如果它有,它将无法找到.如何找到具有某个类的所有对象,无论它们是否还有其他类?
嘿,我正在尝试抓取网站https://www.dawn.com/pakistan但 python find() find_all() 方法返回空列表,我已经尝试了 html5.parser、html5lib 和 lxml 仍然没有运气。我试图抓取的类存在于源代码和汤对象中,但事情似乎不起作用,任何帮助将不胜感激,谢谢!
代码:
from bs4 import BeautifulSoup
import lxml
import html5lib
import urllib.request
url1 = 'https://www.dawn.com/pakistan'
req = urllib.request.Request(
url1,
data=None,
headers=
{
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
}
)
url1UrlContent=urllib.request.urlopen(req).read()
soup1=BeautifulSoup(url1UrlContent,'lxml')
url1Section1=soup1.find_all('h2', class_='story__title-size-five-text-black-
font--playfair-display')
print(url1Section1)
Run Code Online (Sandbox Code Playgroud) 在抓取代码时,我需要以不同的方式处理 2 个场景。2 个相似的类都包含建筑物的价格,需要按时间顺序添加到 excel 中,因为它们必须与我正在抓取的其他数据相匹配。
我正在抓取数据的属性有 2 个不同的类。一个看起来像这样:
<div class="xl-price rangePrice">
375.000 €
</div>
Run Code Online (Sandbox Code Playgroud)
另一个看起来像这样:
<div class="xl-price-promotion rangePrice">
<span>from </span> 250.000 € <br><span>to</span> 695.000 €
</div>
Run Code Online (Sandbox Code Playgroud)
我的代码能够提取其中之一,但不能同时提取两者。我需要它做的是浏览搜索结果页面上的所有价格,并将它们附加到列表“价格表”中。
我对平方米、建筑类型等做了同样的处理,并将每个列表项输入到一个 excel 文件中。
出于这个原因,将它们按时间顺序添加到列表中是至关重要的,因为如果它们不是,结果是价格在 excel 中的行位置将与平方米和建筑类型的行位置不匹配。
有谁知道为什么我的代码无法提取这两个类?
这是我的代码和我试图从中提取价格的页面:
获取网站并循环浏览前 4 页:
for number in range(1, 4):
listplace = (number - 1) * len(buildinglist1)
immo_page = requests.get(f'https://www.immoweb.be/en/search/apartment/for-sale/leuven/3000?page={number}',
headers=header)
soup = Beautiful
Soup(immo_page.content, 'lxml') # html parser
pricelist = ['Price']
for item in soup.findAll('div', attrs={'class': 'xl-price'}):
# item = item.text.strip().split()
try:
for item in …Run Code Online (Sandbox Code Playgroud)