当前位置: 首页 > 知识库问答 >
问题:

使用python和BeautifulSoup删除不完整的标记

凌清夷
2023-03-14

试图刮此网站网址使用urllib2,机械化和美丽汤。当通过浏览器呈现并使用FireBug查看时,我们可以看到带有类progress__supporters和progress_goal的div标签,如下所示。

但是当我们使用urllib2时。打开/mechanize/selenium以查看网页,这些标签不可用。下面是示例代码

    def parse_petition(self,petition):
        mb = mechanize.Browser()
        mb.addheaders = [('User-agent',
                      'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
        mb.set_handle_robots(False)
        data = mb.open(petition,timeout=50).read()
        soup = BeautifulSoup(data)
        print soup.find('progress')

我们使用上述代码获得以下输出。

<div class='progress'>
</div>

一个原因可能是因为类为“progress\uu goal”和“progress\uu support”的div标记不完整。我怎样才能像源代码一样准确地阅读这些页面,并使用BeautifulSoup刮取这些值?

共有1个答案

吴开宇
2023-03-14

该页面使用JavaScript向不同的URL发出POST请求。您可以直接访问此URL并获取JSON。JSON包含您想要的数据,例如:

import mechanize
import urllib
import json
url = "http://www.thepetitionsite.com/servlets/petitions/signatures.php"
params = {'petitionID': '736152031', 'type': 'all'}
data = urllib.urlencode(params)
mb = mechanize.Browser()
mb.addheaders = [('User-agent','Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
mb.set_handle_robots(False)
data = mb.open(url, data = data, timeout=50).read()
jn = json.loads(data)
print (jn)

产出:

{u'signatures': [{u'signtime': u'2017-08-11T03:15:33-07:00', u'number': u'32183', u'firstname': u'Valeska', u'lastname': u'K\xf6hler', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 859429254, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-31.png'}, {u'signtime': u'2017-08-11T03:15:04-07:00', u'number': u'32182', u'firstname': u'jeannie', u'lastname': u'myers', u'state': u'QL', u'petitionID': 736152031, u'prefix': u'', u'passportID': 931195678, u'answer': u'That is an unnecessary ignorant fear reaction !!\U0001f622', u'country': u'au', u'thumbnail': u'//dingo.care2.com/avatars/avatar-40.png'}, {u'signtime': u'2017-08-11T03:14:44-07:00', u'number': u'32181', u'firstname': u'IUSUT', u'lastname': u'MIHAIL', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 625886988, u'answer': u'', u'country': u'ro', u'thumbnail': u'//dingo.care2.com/avatars/avatar-02.png'}, {u'signtime': u'2017-08-11T03:14:43-07:00', u'number': u'32180', u'firstname': u'christine', u'lastname': u'lebrun', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 919702445, u'answer': u'', u'country': u'fr', u'thumbnail': u'//dingo.care2.com/avatars/avatar-35.png'}, {u'signtime': u'2017-08-11T03:14:37-07:00', u'number': u'32179', u'firstname': u'Margaret', u'lastname': u'Crupi', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 352074022, u'answer': u'', u'country': u'it', u'thumbnail': u'//dingo.care2.com/avatars/avatar-48.png'}, {u'signtime': u'2017-08-11T03:14:35-07:00', u'number': u'32178', u'firstname': u'Laaj', u'lastname': u'Jainrathore', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 869300239, u'answer': u'', u'country': u'in', u'thumbnail': u'//dingo.care2.com/avatars/avatar-08.png'}, {u'signtime': u'2017-08-11T03:14:32-07:00', u'number': u'32177', u'firstname': u'Carla', u'lastname': u'Sluiter', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 943512161, u'answer': u'', u'country': u'nl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-34.png'}, {u'signtime': u'2017-08-11T03:14:23-07:00', u'number': u'32176', u'firstname': u'Nadia', u'lastname': u'Dumont', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 120113644, u'answer': u'', u'country': u'fr', u'thumbnail': u'//dingo.care2.com/avatars/avatar-05.png'}, {u'signtime': u'2017-08-11T03:14:16-07:00', u'number': u'32175', u'firstname': u'sandy', u'lastname': u'Paul', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 665562190, u'answer': u'', u'country': u'zw', u'thumbnail': u'//dingo.care2.com/avatars/avatar-17.png'}, {u'signtime': u'2017-08-11T03:14:16-07:00', u'number': u'32174', u'firstname': u'Julie Lind', u'lastname': u'Bugge', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 991829483, u'answer': u'', u'country': u'no', u'thumbnail': u'//dingo.care2.com/avatars/avatar-14.png'}, {u'signtime': u'2017-08-11T03:14:14-07:00', u'number': u'32173', u'firstname': u'Renato', u'lastname': u'Volo', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 546399047, u'answer': u'', u'country': u'it', u'thumbnail': u'//dingo.care2.com/avatars/avatar-13.png'}, {u'signtime': u'2017-08-11T03:14:14-07:00', u'number': u'32172', u'firstname': u'Annette', u'lastname': u'Vorreiter', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 176102442, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-31.png'}, {u'signtime': u'2017-08-11T03:14:08-07:00', u'number': u'32171', u'firstname': u'Anna', u'lastname': u'Novikova', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 423305750, u'answer': u'', u'country': u'ru', u'thumbnail': u'//dingo.care2.com/avatars/avatar-34.png'}, {u'signtime': u'2017-08-11T03:13:39-07:00', u'number': u'32170', u'firstname': u'Daniele', u'lastname': u'Brutails', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 463184194, u'answer': u'', u'country': u'fr', u'thumbnail': u'//dingo.care2.com/avatars/avatar-48.png'}, {u'signtime': u'2017-08-11T03:13:37-07:00', u'number': u'32169', u'firstname': u'Francesca', u'lastname': u'Bottura Dr.', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 748318263, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-23.png'}, {u'signtime': u'2017-08-11T03:13:33-07:00', u'number': u'32168', u'firstname': u'Klod', u'lastname': u'Binette', u'state': u'ON', u'petitionID': 736152031, u'prefix': u'', u'passportID': 829164963, u'answer': u'', u'country': u'ca', u'thumbnail': u'//dingo.care2.com/avatars/avatar-53.png'}, {u'signtime': u'2017-08-11T03:13:29-07:00', u'number': u'32167', u'firstname': u'Birgit', u'lastname': u'Devinck', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 152801006, u'answer': u'', u'country': u'be', u'thumbnail': u'//dingo.care2.com/avatars/avatar-44.png'}, {u'signtime': u'2017-08-11T03:13:35-07:00', u'number': u'32166', u'firstname': u'Elena', u'lastname': u'Kobel', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 289697452, u'answer': u'', u'country': u'ru', u'thumbnail': u'//dingo.care2.com/avatars/avatar-26.png'}, {u'signtime': u'2017-08-11T03:13:26-07:00', u'number': u'32165', u'firstname': u'Kelly', u'lastname': u'martins', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 178687327, u'answer': u'', u'country': u'pt', u'thumbnail': u'//dingo.care2.com/avatars/avatar-01.png'}, {u'signtime': u'2017-08-11T03:13:17-07:00', u'country': u'us', u'number': u'32164', u'petitionID': 736152031, u'state': u'WV', u'answer': u''}, {u'signtime': u'2017-08-11T03:13:07-07:00', u'number': u'32163', u'firstname': u'amy', u'lastname': u'balduccio', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 300568205, u'answer': u'', u'country': u'it', u'thumbnail': u'//dingo.care2.com/avatars/avatar-15.png'}, {u'signtime': u'2017-08-11T03:13:04-07:00', u'number': u'32162', u'firstname': u'Tom', u'lastname': u'Trollip', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 191801121, u'answer': u'', u'country': u'za', u'thumbnail': u'//dingo.care2.com/avatars/avatar-36.png'}, {u'signtime': u'2017-08-11T03:12:57-07:00', u'number': u'32161', u'firstname': u'Biliana', u'lastname': u'Stoimenova', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 805908369, u'answer': u'', u'country': u'bg', u'thumbnail': u'//dingo.care2.com/avatars/avatar-57.png'}, {u'signtime': u'2017-08-11T03:12:48-07:00', u'number': u'32160', u'firstname': u'Mary Jane', u'lastname': u'Penny', u'state': u'NS', u'petitionID': 736152031, u'prefix': u'', u'passportID': 738198745, u'answer': u'', u'country': u'ca', u'thumbnail': u'//dingo.care2.com/avatars/avatar-48.png'}, {u'signtime': u'2017-08-11T03:12:30-07:00', u'number': u'32159', u'firstname': u'Rita', u'lastname': u'Mandy', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 105176875, u'answer': u'', u'country': u'nl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-38.png'}, {u'signtime': u'2017-08-11T03:12:25-07:00', u'number': u'32158', u'firstname': u'Cornelia', u'lastname': u'Cron', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 548415909, u'answer': u'', u'country': u'ch', u'thumbnail': u'//dingo.care2.com/avatars/avatar-56.png'}, {u'signtime': u'2017-08-11T03:12:25-07:00', u'number': u'32157', u'firstname': u'Heidi Anna', u'lastname': u'SAlicites', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 255777868, u'answer': u'JUSTICE!!!!', u'country': u'fr', u'thumbnail': u'//dingo.care2.com/avatars/avatar-48.png'}, {u'signtime': u'2017-08-11T03:12:24-07:00', u'number': u'32156', u'firstname': u'Katarzyna', u'lastname': u'Chabinka', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 428503483, u'answer': u'', u'country': u'pl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-16.png'}, {u'signtime': u'2017-08-11T03:12:16-07:00', u'number': u'32155', u'firstname': u'Anja', u'lastname': u'Muc', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 886625416, u'answer': u'', u'country': u'si', u'thumbnail': u'//dingo.care2.com/avatars/avatar-13.png'}, {u'signtime': u'2017-08-11T03:12:11-07:00', u'number': u'32154', u'firstname': u'M', u'lastname': u'Uitendaal', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 583056481, u'answer': u'', u'country': u'nl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-42.png'}, {u'signtime': u'2017-08-11T03:12:09-07:00', u'number': u'32153', u'firstname': u'Rodrigo Alberto', u'lastname': u'Corral Prieto', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 874484021, u'answer': u'', u'country': u'es', u'thumbnail': u'//dingo.care2.com/avatars/avatar-24.png'}, {u'signtime': u'2017-08-11T03:11:46-07:00', u'country': u'at', u'number': u'32152', u'petitionID': 736152031, u'state': u'', u'answer': u''}, {u'signtime': u'2017-08-11T03:11:45-07:00', u'number': u'32151', u'firstname': u'Elke', u'lastname': u'Keilhack', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 587405469, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-40.png'}, {u'signtime': u'2017-08-11T03:11:38-07:00', u'number': u'32150', u'firstname': u'carol', u'lastname': u'montiel', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 597892359, u'answer': u'', u'country': u'es', u'thumbnail': u'//dingo.care2.com/avatars/avatar-41.png'}, {u'signtime': u'2017-08-11T03:11:34-07:00', u'number': u'32149', u'firstname': u'myriam', u'lastname': u'monfort', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 468649913, u'answer': u'', u'country': u'sn', u'thumbnail': u'//dingo.care2.com/avatars/avatar-45.png'}, {u'signtime': u'2017-08-11T03:11:22-07:00', u'number': u'32148', u'firstname': u'Katarzyna', u'lastname': u'Marszczewska', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 925605596, u'answer': u'', u'country': u'pl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-20.png'}, {u'signtime': u'2017-08-11T03:11:18-07:00', u'number': u'32147', u'firstname': u'Rosanna', u'lastname': u'Bub', u'state': u'NY', u'petitionID': 736152031, u'prefix': u'', u'passportID': 192955958, u'answer': u'', u'country': u'us', u'thumbnail': u'//dingo.care2.com/avatars/avatar-46.png'}, {u'signtime': u'2017-08-11T03:11:04-07:00', u'number': u'32146', u'firstname': u'Carol', u'lastname': u'Lois', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 984811368, u'answer': u'', u'country': u'es', u'thumbnail': u'//dingo.care2.com/avatars/avatar-46.png'}, {u'signtime': u'2017-08-11T03:10:58-07:00', u'number': u'32145', u'firstname': u'heidi', u'lastname': u'coomans', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 318995974, u'answer': u'', u'country': u'be', u'thumbnail': u'//dingo.care2.com/avatars/avatar-14.png'}, {u'signtime': u'2017-08-11T03:10:56-07:00', u'number': u'32144', u'firstname': u'BELEN', u'lastname': u'FERNANDEZ', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 293631858, u'answer': u'', u'country': u'es', u'thumbnail': u'//dingo.care2.com/avatars/avatar-05.png'}, {u'signtime': u'2017-08-11T03:10:56-07:00', u'number': u'32143', u'firstname': u'Rosario', u'lastname': u'Sottomayor', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 361636785, u'answer': u'', u'country': u'pt', u'thumbnail': u'//dingo.care2.com/avatars/avatar-09.png'}, {u'signtime': u'2017-08-11T03:10:42-07:00', u'number': u'32142', u'firstname': u'Aur\xe9lie', u'lastname': u'Taillade', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 150185514, u'answer': u'', u'country': u'fr', u'thumbnail': u'//dingo.care2.com/avatars/avatar-47.png'}, {u'signtime': u'2017-08-11T03:10:36-07:00', u'number': u'32141', u'firstname': u'Linda', u'lastname': u'Boots', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 365546914, u'answer': u'', u'country': u'ge', u'thumbnail': u'//dingo.care2.com/avatars/avatar-02.png'}, {u'signtime': u'2017-08-11T03:10:35-07:00', u'number': u'32140', u'firstname': u'M.', u'lastname': u'L.', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 561519437, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-06.png'}, {u'signtime': u'2017-08-11T03:10:26-07:00', u'number': u'32139', u'firstname': u'Junghyun', u'lastname': u'Yoo', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 183208382, u'answer': u'', u'country': u'de', u'thumbnail': u'//dingo.care2.com/avatars/avatar-43.png'}, {u'signtime': u'2017-08-11T03:10:19-07:00', u'number': u'32138', u'firstname': u'Dave', u'lastname': u'Watt', u'state': u'SC', u'petitionID': 736152031, u'prefix': u'', u'passportID': 640241450, u'answer': u'', u'country': u'gb', u'thumbnail': u'//dingo.care2.com/avatars/avatar-54.png'}, {u'signtime': u'2017-08-11T03:10:17-07:00', u'number': u'32137', u'firstname': u'Inge', u'lastname': u'Clegg', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 235047028, u'answer': u'', u'country': u'za', u'thumbnail': u'//dingo.care2.com/avatars/avatar-42.png'}, {u'signtime': u'2017-08-11T03:10:06-07:00', u'number': u'32136', u'firstname': u'Jul', u'lastname': u'Gtsmen', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 942199826, u'answer': u'', u'country': u'il', u'thumbnail': u'//dingo.care2.com/avatars/avatar-23.png'}, {u'signtime': u'2017-08-11T03:10:05-07:00', u'number': u'32135', u'firstname': u'Judith', u'lastname': u'Notario Calurano', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 621092394, u'answer': u'', u'country': u'es', u'thumbnail': u'//dingo.care2.com/avatars/avatar-22.png'}, {u'signtime': u'2017-08-11T03:10:05-07:00', u'number': u'32134', u'firstname': u'Penny', u'lastname': u'Coleman', u'state': u'SW', u'petitionID': 736152031, u'prefix': u'', u'passportID': 310698412, u'answer': u'', u'country': u'gb', u'thumbnail': u'//dingo.care2.com/avatars/avatar-25.png'}, {u'signtime': u'2017-08-11T03:10:01-07:00', u'number': u'32133', u'firstname': u'tjesje', u'lastname': u'kuipers', u'state': u'', u'petitionID': 736152031, u'prefix': u'', u'passportID': 649606054, u'answer': u'', u'country': u'nl', u'thumbnail': u'//dingo.care2.com/avatars/avatar-23.png'}], u'signature_count': 32170}

您可以通过以下方式访问签名计数:

print (jn['signature_count'])
 类似资料:
  • 问题 我正在尝试从BeautifulSoup下载的html文件中删除诸如 和之类的样式标记。我确实想保留标签包含的内容(比如文本),但这似乎不起作用。 我所尝试的 我尝试使用的URL Python HTML解析和过滤停止词 使用Python和lxml从HTML中删除class属性 BeautifulSoup标签去除

  • 问题内容: 是否可以使用BeautifulSoup从HTML中删除脚本标签及其所有内容,还是必须使用正则表达式或其他内容? 问题答案:

  • 问题内容: 如何打印“我喜欢你的脸”而不是“我喜欢打你的脸” 我试过了 但它给出“ TypeError:find()不包含关键字参数” 问题答案: 您可以先删除不需要的标签,然后再获取文字。 但是它保留了所有内容,因此您需要一些工作才能删除它们。 结果 您可以跳过外部范围内的每个对象,而仅保留对象(HTML中为纯文本)。 结果

  • 如题,如果想用Java处理一段带有html标签的字符串。 要求: ①如果只存在后半部分标签,不存在前半部分标签,就将后半部分标签删除。 ②如果只存在前半部分标签,不存在后半部分标签,就将前半部分标签删除。 例如下面这段: 平明后的</u> 标签被我故意删除了;洛阳前的<u>标签被我故意删除了。 有什么办法可以删除这些不完整的标签,最好还能保留标签内容的? 不是提取标签内容,是将不完整的标签删除。

  • 问题内容: 我想从对象中删除特定对象。 我正在使用和。 根据文档,我们可以使用。 但这会删除所有。如何删除特定班级的? 问题答案: 当然,你可以,或将在通常的方式兴趣s,然后叫上这些div。 例如,如果要删除class的所有div ,则可以使用 如果你想删除一个div与特定的,比方说,你可以做到这一点

  • 我使用JSoup解析字符串,其中包含超文本标记语言标记为纯文本。例如: 它可以很好地解析它,但问题是我的Java字符串是否包含