python从<;em></em>;

python从<;em></em>;,python,text,web-crawler,Python,Text,Web Crawler,嗨,我想从em标签中获取文本(数字18),如上图所示。 当我运行代码时,它不起作用,只给了我一个空列表。有人能帮我吗?多谢各位~ 这是我的密码 from urllib.request import urlopen from bs4 import BeautifulSoup url = 'https://blog.naver.com/kwoohyun761/221945923725' html = urlopen(url) soup = BeautifulSoup(html, 'lxml')

嗨,我想从em标签中获取文本(数字18),如上图所示。 当我运行代码时,它不起作用,只给了我一个空列表。有人能帮我吗?多谢各位~

这是我的密码

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = 'https://blog.naver.com/kwoohyun761/221945923725'
html = urlopen(url)

soup = BeautifulSoup(html, 'lxml')

likes = soup.find_all('em', class_='u_cnt _count')

print(likes)

当您禁用javascript时,您将看到like计数是动态加载的,因此您必须使用呈现网站的服务,然后才能解析内容

您可以使用API:

或者运行自己的,例如:

编辑:

首先,我没有注意到您错误地使用了urlopen,这里描述了正确的方法:。假设您使用的是python3,从print语句判断似乎就是这样

此外,再看看这个问题,它有点复杂。当您查看页面的源代码时,它实际上加载了一个iframe,在该iframe中,您拥有实际的内容:点击ctrl+u以查看原始url的源代码,因为该侧似乎会阻止浏览器上下文菜单

因此,为了实现爬行目标,您必须首先抓取初始页面,然后抓取您感兴趣的页面:

from urllib.request import urlopen
from bs4 import BeautifulSoup

# original url
url = "https://blog.naver.com/kwoohyun761/221945923725"

with urlopen(url) as response:
   html = response.read()

soup = BeautifulSoup(html, 'lxml')

iframe = soup.find('iframe')

# iframe grabbed, construct real url
print(iframe['src'])
real_url = "https://blog.naver.com" + iframe['src']

# do your crawling
with urlopen(real_url) as response:
   html = response.read()

soup = BeautifulSoup(html, 'lxml')

likes = soup.find_all('em', class_='u_cnt _count')

print(likes)
通过分析原始url和iframe中的url,可以避免一次往返。乍一看,iframe url似乎可以从原始url构建

您仍然需要iframe url的呈现版本来获取所需的值


我不知道这个网站是关于什么的,但他们似乎不想被爬网,也许你尊重这一点。

谢谢。我仍在苦苦思索如何找出这个数字。如果你能给我一个示例代码,那就太好了。我扩展了我的帖子谢谢你的代码和帮助。我会再试一次。