我使用python 3.6和Pycharm 2016.2作为编辑器
我想抓取" th"内的成对内容。 :" td"标签如果" td" tag有一个子标记,输入标记为" checked =' chedcked'"。我尝试了来自BeautifulSoup和其他人的regEx,find_all,但仍然有错误消息。
请帮忙。
这是网站地址:http://www.bobaedream.co.kr/mycar/popup/mycarChart_4.php?zone=C&cno=652691&tbl=cyber
以下是我的代码:
Empty Cache and Hard Reload
答案 0 :(得分:1)
我们的想法是使用searching function找到th
元素后跟td
兄弟。然后,我们可以使用input
找到type="radio"
元素,并显示checked
属性。如果有,我们可以在广播label
之后找到input
元素。
示例实施:
import requests
from bs4 import BeautifulSoup
url = "http://www.bobaedream.co.kr/mycar/popup/mycarChart_4.php?zone=C&cno=652691&tbl=cyber"
with requests.Session() as session:
session.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'}
page = session.get(url)
soup = BeautifulSoup(page.content, "html.parser")
for label in soup.find_all(lambda tag: tag.name == "th" and tag.find_next_sibling('td')):
value_cell = label.find_next_sibling('td')
# if combobox cell
selected_value = value_cell.find("input", type="radio", checked=True)
if selected_value:
value = selected_value.find_next("label").get_text()
print(label.get_text(), value)
目前正在打印:
10. 보증유형 자가보증
13. 사고/침수유무(단순수리제외) 무
12. 불법구조변경 없음
当然,这可以而且应该进一步改进,但我希望该片段中使用的技术可以帮助您找到最终的解决方案。