Python:使用 BeautifulSoup 解析 anchor 文本

标签 python encoding beautifulsoup

我正在尝试从一个网站解析 anchor 文本(示例:Mercedes-Benz、308、savivarčiai)。

使用:Python 3.4

<h2 class="title-list"><a href="http://auto.plius.lt/skelbimai/mercedes-benz-308-savivarciai-3876306.html" title="Mercedes-Benz, 308, savivarčiai" onclick="OpenNamedPopup('http://auto.plius.lt/skelbimai/mercedes-benz-308-savivarciai-3876306.html', 'A3876306'); return false;">Mercedes-Benz, 308, savivarčiai</a>&nbsp;</h2>

我的代码如下所示:

import requests
from bs4 import BeautifulSoup

def autoplius():

    url = "http://auto.plius.lt/skelbimai/krovininis-transportas/sunkvezimiai?make_date_from=1989&make_date_to=1997&make_id=4169"
    r = requests.get(url)
    plain_text = r.text
    soup = BeautifulSoup(plain_text)

    for link in soup.findAll('h2',{'class':'title-list'}):
        ahref = link.find('a')

        print(ahref.get('ahref'))


autoplius()

但是我得到的返回是一堆行none none none none none..

我的第二个问题是关于编码,每当我尝试打印一些东西时,我都会遇到编码问题

像这样:

UnicodeEncodeError: 'charmap' codec can't encode character '\x8d' in position 248: character maps to <undefined>

如何解决这个问题?

r.encoding 的输出:

ISO-8859-1

问题已解决

我安装了 PyCharm,它可以在 PyCharm 控制台上运行。问题是我的 Windows 终端不显示 Latin1 字符。

最佳答案

requests.content 处理编码并从 a 标记中获取文本:

def autoplius():    
    url = "http://auto.plius.lt/skelbimai/krovininis-transportas/sunkvezimiai?make_date_from=1989&make_date_to=1997&make_id=4169"
    r = requests.get(url)
    plain_text = r.content
    print(plain_text)
    soup = BeautifulSoup(plain_text)

    for link in soup.findAll('h2',{'class':'title-list'}):
        print(link.a.text)


Mercedes-Benz, 308, savivarčiai
Mercedes-Benz, 609, kietašoniai
Mercedes-Benz, 308, bortiniai
Mercedes-Benz, 609, Šaldytuvai
Mercedes-Benz, 609, Šaldytuvai
Mercedes-Benz, 1114, važiuoklės
Mercedes-Benz, 3344AK, savivarčiai
Mercedes-Benz, 814, važiuoklės
Mercedes-Benz, 308, Šaldytuvai
Mercedes-Benz, 609, dviguba kabina
Mercedes-Benz, 609, Šaldytuvai
Mercedes-Benz, HMF 1150, savivarčiai su kranu
Mercedes-Benz, sprinter 312, kietašoniai
Mercedes-Benz, 814, Šaldytuvai
Mercedes-Benz, Sprinter 208, bortiniai
Mercedes-Benz, SPRINTER 308D, bortiniai
Mercedes-Benz, Sprinter 212 TDi, bortiniai
Mercedes-Benz, 711 MAXI, kietašoniai
Mercedes-Benz, 814, bortiniai
Mercedes-Benz, 208, bortiniai
Citroen Grand C4 Picasso

关于Python:使用 BeautifulSoup 解析 anchor 文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27968695/

相关文章:

c# - Encoding.Default 在 .NET 中如何工作?

python - BeautifulSoup4循环找不到后续元素

python - 字符串到浮点类型的 Ndarray

Python 原生任意精度

file - Mercurial:哪个配置属性控制文件内容的编码?

python-3.x - 如何获得BeautifulSoup标签的所有直接子级?

python - 使用 BeautifulSoup 在标签内插入标签

python - 如何从列表中解压四个变量?

python - Keras 进度条不适用于 Windows 10

MySQL 将 ÅäÖ 视为 AAO?