Python:使用BeautifulSoup解析锚文本
Python: Parse anchor text using BeautifulSoup
我正在尝试从一个网站解析锚文本(示例: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> </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()
但是 return 我得到的是一堆 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
我正在尝试从一个网站解析锚文本(示例: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> </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()
但是 return 我得到的是一堆 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