在不同的兄弟姐妹中使用beautifulsoup进行网络搜索

时间:2018-03-20 22:49:28

标签: python selenium web-scraping beautifulsoup

我尝试过不同的方法通过BeautifulSoup,urllib和Selenium从网站上抓取Answer1Answer2,但没有成功。这是简化版本:

<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 GoodsElectronic Equipment吗?而使用urllib.requests会更好吗?谢谢。

2 个答案:

答案 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)

我的朋友正在进行会员检查,以及如何做到这一点的元组。