抓取特定文本(字符串)的网页
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抓取特定文本(字符串)的网页相关的知识,希望对你有一定的参考价值。
关于stackoverflow的第一篇文章,因此如果我没有正确地发表,我深表歉意。我试图仅当存在特定文本字符串时才抓取信息页面。我只使用漂亮的汤,但是找不到包含我要查找的文本的元素。经过更多的研究后,我尝试使用硒,原因是在美丽的汤中找不到某些动态加载的元素。到目前为止,我仍然找不到文本字符串。当我检查元素时,该文本是可定位的。
TLDR:鉴于我可以找到文字“公开发行价”,因此我想以每股价格抓取此网页。使用beautifulsoup或selenium时找不到字符串,但是可以通过检查元素(https://docoh.com/filing/829323/0001654954-20-006336/INUV-424B5)
找到我建议您使用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)'
我本人对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'
以上是关于抓取特定文本(字符串)的网页的主要内容,如果未能解决你的问题,请参考以下文章