相关疑难解决方法(0)

如果对象也有其他类,Beautiful Soup也找不到CSS类

如果网页上有<div class="class1"><p class="class1">,然后soup.findAll(True, 'class1')就会发现他们两个.

<p class="class1 class2">但是,如果它有,它将无法找到.如何找到具有某个类的所有对象,无论它们是否还有其他类?

python screen-scraping beautifulsoup

40
推荐指数
3
解决办法
1万
查看次数

Python BS4 find() find_all() 返回空列表

嘿,我正在尝试抓取网站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)

python beautifulsoup web-scraping

5
推荐指数
1
解决办法
9396
查看次数

如果类不同且包含不同的内容,如何从类中提取内容并将它们按时间顺序添加到列表中?

在抓取代码时,我需要以不同的方式处理 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)

text-extraction beautifulsoup web-scraping

0
推荐指数
1
解决办法
160
查看次数