python - 如何提取 HTML 段落的某些部分

标签 python html web-scraping beautifulsoup mechanize

我是网页抓取和正则表达式的新手,在这里遇到了一个问题。我的一个代码给了我一个 HTML 输出,但我需要从段落中提取某个部分而不是完整的段落。我需要这方面的帮助。下面是我的代码。

import mechanize
from bs4 import BeautifulSoup
import urllib2
br = mechanize.Browser()
response = br.open("http://www.consultadni.info/index.php")
br.select_form(name="form1")
br['APE_PAT']='PATRICIO'
br['APE_MAT']='GAMARRA'
br['NOMBRES']='MARCELINA'
req=br.submit().read()
soup = BeautifulSoup(req, "lxml")
for link in soup.findAll("a"):
     sub=link.get("href")
     soup1 = BeautifulSoup(sub, "lxml")
     print soup1.find_all('p')

屏幕输出:
[<p>/</p>]
[<p>datospersonales.php?nc=PATRICIO GAMARRA MARCELINA&amp;dni1=40772568&amp;dni2=12405868&amp;id1=12a40a58a68&amp;id2=30/06/1980&amp;dni3=40631880</p>]
[<p>datospersonales.php?nc=PATRICIO GAMARRA MARCELINA&amp;dni1=40772568&amp;dni2=12405868&amp;id1=12a40a58a68&amp;id2=30/06/1980&amp;dni3=40631880</p>]
[<p>http://www.infocorpperuconsultatusdeudas.blogspot.com/2015/05/infocorp-consulta-gratis-tu-reporte-de.html?ref=dnionline</p>]

我需要什么:30/06/1980 & 40631880

最佳答案

对于 Python 2.7,请尝试这种方式:

from urlparse import parse_qs

result = set()

for link in soup.find_all("a"):
     sub = parse_qs(link.get("href"))

     if "id2" in sub:
         result.add((sub["id2"][0], sub["dni3"][0]))

print result

关于python - 如何提取 HTML 段落的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47446494/

相关文章:

python - UTF-8 和 upper()

javascript - 如何固定 jQuery 中分隔符的位置?

asp.net - 创建嵌套的 Div

android - 在使用 python 编码的 Android 应用程序中使用蓝牙

python - 将变量的变量列表作为文件传递给Docker

python - MySql 到 Python 模型创建工具

python - 如何仅将该网站 HTML 表的第一列和 href 链接抓取到 pandas 数据框中?

html - 导航栏向左浮动使内容在同一行

javascript - Facebook 是否知道我正在使用 PhantomJS 抓取它,并且它可以更改其网站来对抗我吗?

python - 无法从网页中抓取标题