我需要一个插入来完成这个脚本。
我正在为特定子字符串抓取新闻稿网站。目的是为名为提到的公司.. 的特定部分解析页面,并将每个公司的名称放入列表数据类型
这是我目前所拥有的,它有效但只得到第一项:
from bs4 import BeautifulSoup as bs4
import requests
import re
url = 'http://news.hipsternomics.com/issues/how-much-is-your-personal-data-worth-on-the-black-market-148489'
r = requests.get(url).text
soup = bs4(r, 'html.parser')
companies = []
for elem in soup(text=re.compile(r'^(.*?Companies mentioned\b)')):
companies.append(elem)
期望的结果:
- 我想将提到的公司放入这样的列表中:
[谷歌、苹果、特斯拉、耐克、TJX、Ross、L Brands、多米诺骨牌]
我还对可以改进正则表达式函数以捕获异常情况的方法持开放态度,例如“本期中提到的公司:”或“提到的公司:”,如 here 所示. 谢谢。
最佳答案
您可以通过提供 div
类值来访问内容:
import requests, re
from bs4 import BeautifulSoup as soup
d = soup(requests.get('http://news.hipsternomics.com/issues/how-much-is-your-personal-data-worth-on-the-black-market-148489').text, 'html.parser')
new_d = [i for i in d.find_all('div', {'class':'revue-p'}) if 'Companies mentioned' in i.text][0]
*final_results, _ = [re.sub('^[\w\s]+[,\s:]+|^[,\s]+|\s+$', '', i) for i in new_d.contents if isinstance(i, str)]
输出:
['Google', 'Apple', 'Tesla', 'Nike', 'TJX', 'Ross', 'L Brands', 'Domino’s']
关于python - 使用正则表达式从 HTML 中提取所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54139932/