以下代码为我解析了该页面,没有所有反斜杠:
import bs4
import urllib2
request = urllib2.Request('https://www.gob.mx/presidencia/es/archivo/articulos?filter_id=5169&filter_origin=archive&idiom=es&page=1')
request.add_header('Accept-Encoding','utf-8')
response = urllib2.urlopen(request)
soup = bs4.BeautifulSoup(response)
摘自这篇文章:
How to correctly parse UTF-8 encoded HTML to Unicode strings with BeautifulSoup?
,
您还可以使用requests
模块(pip3 install requests
):
import requests
from bs4 import BeautifulSoup as soup
d = soup(requests.get('https://www.gob.mx/presidencia/es/archivo/articulos?filter_id=5169&filter_origin=archive&idiom=es&page=1').text,'html.parser')
result = [{'img':i.div.img['src'],'time':i.time.text,'text':i.h2.text,'link':i.a['href']} for i in d.find_all('article')]
要获取链接,您可以遍历result
并访问每个链接的link
键。这些链接是相对的,因此要创建完整的URL,可以使用urllib.parse
:
import urllib.parse
base = 'https://www.gob.mx/presidencia/es/archivo/articulos?filter_id=5169&filter_origin=archive&idiom=es&page=1'
links = [urllib.parse.urljoin(base,i['link']) for i in result]
输出:
['https://www.gob.mx/presidencia/es/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-jueves-14-de-noviembre-2019?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-miercoles-13-de-noviembre-2019?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-martes-12-de-noviembre-2019?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-lunes-11-de-noviembre-2019?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-dialogo-con-los-pueblos-maya-peninsular-ch-ol-tsotsil-tseltal-y-poblacion-indigena-migrante-desde-calakmul?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-dialogo-con-el-pueblo-maya-peninsular-y-poblacion-indigena-migrante-desde-felipe-carrillo-puerto?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-dialogo-con-el-pueblo-maya-peninsular-desde-temozon?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-dialogo-con-el-pueblo-maya-peninsular-desde-tekax-de-alvaro-obregon?idiom=es','https://www.gob.mx/presidencia/es/articulos/version-estenografica-de-la-conferencia-de-prensa-matutina-viernes-8-de-noviembre-2019?idiom=es']
,
我使用了适用于python 3.7的urllib3
您可以在userguide
中找到详细信息
import urllib3
http = urllib3.PoolManager()
request = http.request('get','URL-HERE')
soup = BeautifulSoup(request.data,"html.parser")
本文链接:https://www.f2er.com/3095266.html