关于stackoverflow的第一篇文章,因此如果我没有正确发表,我深表歉意。我试图仅在存在特定文本字符串时才抓取信息页面。我只使用漂亮的汤,但是找不到包含我要查找的文本的元素。经过更多的研究后,我尝试使用硒,原因是在美丽的汤中找不到某些动态加载的元素。到目前为止,我仍然找不到文本字符串。当我检查元素时,该文本是可定位的。
TLDR:鉴于我可以找到文字“公开发行价”,因此我想以每股价格抓取此网页。使用Beautifulsoup或Selenium时找不到字符串,但是可以使用inspect元素(https://docoh.com/filing/829323/0001654954-20-006336/INUV-424B5)定位
答案 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
还是陌生的,但是我能够获得所需的输出...我将尝试向您展示从发现问题到找到解决方案的整个过程。
但是当我看下面的代码创建的汤时,找不到这些类:
#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'