嗨,我对python很新,我的老板要求我抓取这些数据,但这不是我的强项,所以我想知道我会怎么做。
我所追求的文字每隔几分钟也会在引号中发生变化,所以我也不确定如何找到它。
我现在正在使用美丽的汤和Lxml然而如果有更好的选择我很乐意尝试它们
这是网页的检查元素:
div class = "sometext"
<h3> somemoretext </h3>
<p>
<span class = "title" title="text i want">text i want</span>
<br>
</p>
我尝试过使用:
from lxml import html
import requests
from bs4 import BeautifulSoup
page = requests.get('the url')
soup = BeautifulSoup(page.text)
r = soup.findAll('//span[@class="title"]/text()')
print r
提前感谢您,任何帮助将不胜感激!
答案 0 :(得分:0)
或许find
是您真正需要的方法,因为您只需寻找一个元素。 docs
r = soup.find('div', 'sometext').find('span','title')['title']
答案 1 :(得分:0)
首先这样做是为了得到你在汤里看到的东西:
soup = BeautifulSoup(page)
print soup
通过这种方式,您可以仔细检查您实际上正在处理您认为自己正在处理的事情。
然后这样做:
r = soup.findAll('span', attrs={"class":"title"})
for span in r:
print span.text
这将获得带有span
的所有class=title
代码,然后text
将打印出代码之间的所有文字。
已编辑添加
请注意,esecules的回答会在标记(<span class = "title" title="text i want">
)中为您提供标题,而我的将从文本中获取标题(<span class = "title" >text i want</span>
)
答案 2 :(得分:0)
如果您熟悉XPath并且不需要特定于BeautifulSoup
的功能,那么仅使用lxml
就足够了(或者可能更好lxml
}已知更快):
from lxml import html
import requests
page = requests.get('the url')
root = html.fromstring(page.text)
r = root.xpath('//span[@class="title"]/text()')
print r