首页 文章

从div标签中提取文本

提问于
浏览
0

我有一个列表,我正在使用属性从美丽的汤中提取 .

g_info = soup.find_all("div", {"id":"details_readonly"})
print g_info ## this prints out all the contents of the div tag. 

y = re.compile(r'B00(.{7})',g_info)
print y

该列表是未经过清理的HTML . 此列表中的某个位置是一个文本,其中的模式始终以B00开头,它是一个10位数字,需要从包含随机文本的div标签中的多个页面中提取 .

g_info有一个列表,其中包含列表的所有html内容 . 此列表与此类似:

[<div id="details_readonly" style="">\n<h2>Lorem Ipsum                                    <small></h2>\n                               Lorem Ipsum text 
Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text No
B00EQ0CKRQ
Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text </div>]

我'm getting an error when i'我试图使用正则表达式 y=re.compile(r'B00(.{7})',g_info) 在g_info中找到模式:

y = re.compile(r'B00(.{7})',g_info)
  File "C:\Python27\lib\re.py", line 190, in compile
    return _compile(pattern, flags)
  File "C:\Python27\lib\re.py", line 232, in _compile
    p = _cache.get(cachekey)
TypeError: unhashable type: 'ResultSet'

有人可以帮助我使用上面提到的模式从div标签中提取内容 .

1 回答

  • 0
    import re
    g_info = '<div id="details_readonly" style="">\n<h2>Lorem Ipsum                                    <small></h2>\n                               Lorem Ipsum text 
    Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text No
    B00EQ0CKRQ
    Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text Lorem Ipsum text </div>]' print re.search('B00.{7}', g_info).group(0)

    输出:

    B00EQ0CKRQ
    

    UPDATE: 使用您的代码:

    g_info = soup.find_all("div", {"id":"details_readonly"})
    print g_info ## this prints out all the contents of the div tag. 
    
    y = re.search('B00.{7}', ''.join(g_info)).group(0)
    print y
    

    ''.join(g_info) 会将列表 g_info 转换为字符串,正则表达式应该可以正常工作 .

相关问题