我尝试过不同的方法通过BeautifulSoup,urllib和Selenium从网站上抓取Answer1
和Answer2
,但没有成功。这是简化版本:
<div class="div1">
<p class="p1"></p>
<p class="p2">
<span>Question1</span>
<strong>Answer1</strong>
<br>
<span>Question2</span>
<strong>Answer2</strong>
<br>
在selenium中,我尝试找到Question1
,然后转到其父级并抓取Answer1
。下面是我使用的代码,虽然它不正确。
browser.find_elements_by_xpath("//span[contains(text(), 'Question1')]/parent::p/following::strong")
在这种情况下,我认为bs比硒更有效。你会如何在bs中做到这一点?谢谢!
编辑: @ Juan的解决方案非常适合我的例子。但是,我意识到它不适用于网站https://finance.yahoo.com/quote/AAPL?p=AAPL。任何人都可以从那里解析Consumer Goods
和Electronic Equipment
吗?而使用urllib.requests会更好吗?谢谢。
答案 0 :(得分:1)
我就是这样做的。我修改了你的html关闭标签p和div:
from bs4 import BeautifulSoup as BS
html = """
<div class="div1">
<p class="p1"></p>
<p class="p2">
<span>Question1</span>
<strong>Answer1</strong>
<br>
<span>Question2</span>
<strong>Answer2</strong>
<br>
</p>
</div>
"""
soup = BS(html,'lxml')
QA = {x.text:y.text for x,y in zip(soup.select('span'),soup.select('strong'))}
print(QA)
答案 1 :(得分:-1)
div class =&#34; div1&#34;&gt;
问题1 答案1
问题2 答案2
您只需要导入并使用requests和beautifulsoup进行操作
Import request
From bs4 import BeautifulSoup
Url ="google.com"
R = requests.get(url)
Soup = BeautifulSoup(url, "lxml")
For link in links:
Soup.find_all("span")
Print(link.text())
For answers in answer:
Soup.find_all("strong")
Print(answes.text)
我的朋友正在进行会员检查,以及如何做到这一点的元组。