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

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并不陌生,但我能够获得所需的输出...我将尝试向您展示从发现问题到找到解决方案的整个过程。

[当我检查元素时,我得到了: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'

以上是关于抓取特定文本(字符串)的网页的主要内容,如果未能解决你的问题,请参考以下文章

请教网页里的特定数据怎么抓取?

PYTHON笔记简单的网页爬虫:用正则表达式抓取关键信息

用正则表达式抓取豆瓣数据

尽管网页没有改变,Python程序抓取不同的文本

网页抓取后如何保存结果文本

如何将我的网页抓取结果保存到美丽汤中的文本文件中?