抓取网页中的特定文本(字符串)

时间:2020-06-06 00:08:23

标签: python

关于stackoverflow的第一篇文章,因此如果我没有正确发表,我深表歉意。我试图仅在存在特定文本字符串时才抓取信息页面。我只使用漂亮的汤,但是找不到包含我要查找的文本的元素。经过更多的研究后,我尝试使用硒,原因是在美丽的汤中找不到某些动态加载的元素。到目前为止,我仍然找不到文本字符串。当我检查元素时,该文本是可定位的。

TLDR:鉴于我可以找到文字“公开发行价”,因此我想以每股价格抓取此网页。使用Beautifulsoup或Selenium时找不到字符串,但是可以使用inspect元素(https://docoh.com/filing/829323/0001654954-20-006336/INUV-424B5)定位

2 个答案:

答案 0 :(得分:0)

我建议您使用python和httplib,这样可以避免因需要开发的机制而过高,并且不需要太多。

import httplib
connection = httplib.HTTP(S)Connection("ip/hostname", port)
req = connection.request("GET", "url")
if(req.read() == "text you are looking for")
    print("found")

很明显,您选择了HTTP或HTTPS连接,然后将ip / hostname和url替换为所需的地址和url。

注意:您始终可以在像以下这样的oneliner中使用python帮助模块:
python -c 'import httplib; help(httplib)'

答案 1 :(得分:0)

我本人对beautifulsoup还是陌生的,但是我能够获得所需的输出...我将尝试向您展示从发现问题到找到解决方案的整个过程。

当我检查元素时,我得到了: enter image description here

但是当我看下面的代码创建的汤时,找不到这些类:

#code
import requests
from bs4 import BeautifulSoup as bs

page = requests.get('https://docoh.com/filing/829323/0001654954-20-006336/INUV-424B5')
soup = bs(page.content,'html.parser')
print(soup)

我能找到的最远的类是filing-frame,我注意到这是一个iframe。因此,我研究了如何使用beautifulsoup从iframe中获取数据。我发现了这个SO post。第一个答案就是所需要的。

现在我没用过urllib,所以我坚持使用requests。最终,这就是我想出的:

for iframe in soup("iframe"):
    i_frame= requests.get("https://docoh.com"+iframe.attrs['src'])
    iframe_soup = bs(i_frame.content)

现在,如果我在agm中搜索类iframe_soup,我将得到所需的结果...

print(iframe_soup.find_all("td", {"class": "agm"})[1].text)
#output : '5,500,0000'