python - 如何抓取具有特定选项值的选项

标签 python web-scraping

假设我有一个类似的列表:

<option value="Mango/20181106/UK">06/11/2018</option>,
<option value="Orange/20181104/CN">04/11/2018</option>,
<option value="Apple/20181031/CN">31/10/2018</option>,
<option value="Orange/20181028/CN">28/10/2018</option>,

我怎样才能只抓取那些选项值以“Orange”开头的选项?

我的部分代码:

url='myurl'
url_content = requests.get(url)
html_content = url_content.text
soup = BeautifulSoup(html_content, 'lxml')

soup2 = soup.find('div', class_="rowDiv5")
data = soup2.find('td', class_="tdAlignR")
options = data.find_all("option" )

最佳答案

使用 css 选择器和 ^ 运算符(表示属性值以以下开头)会更有效

from bs4 import BeautifulSoup as bs

html = """
<option value="Mango/20181106/UK">06/11/2018</option>,
<option value="Orange/20181104/CN">04/11/2018</option>,
<option value="Apple/20181031/CN">31/10/2018</option>,
<option value="Orange/20181028/CN">28/10/2018</option>
"""
soup = bs(html, 'lxml')
items = [item.text for item in soup.select('option[value^="Orange"]')]

关于python - 如何抓取具有特定选项值的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905431/

相关文章:

python - 使用 xml.etree.ElementTree 解析 XML

python - Waitress 如何处理并发任务?

python - 在 python 中使用 BS 抓取页面仅捕获 splitColumn 的第一列

python - 无法使用selenium和Python连接到网页

python - 使用 H.323 测试遗留语音邮件系统

Python计算字符串中不与字符串重叠的出现次数

javascript - 如果我想要抓取的图像受 cloudflare 保护并给出 1020 错误,有没有办法使用 Cheerio 抓取网站?

python - 如何使用 beautifulsoup 在 span 标签之间进行抓取

r - 无法使用 r 中的 rvest 包通过 read_html 读取网页

python - 如何在 numpy 中生成弧线?