我使用的是在Stackoverflow上找到的示例代码,具体地说,我使用了投票率第二高的答案中提议的部分代码。代码如下:
import urllib
from bs4 import BeautifulSoup
url = "https://www.dailymotion.com/search/1234"
html = urllib.urlopen(url).read()
soup = BeautifulSoup(html)
print(soup.find('body'))
您可能已经注意到,我打电话给dailymotion.com,在这里我要分析一些随机文本“ 1234”的搜索结果。
当我按下 F12 并分析源代码时,尤其是正文部分,我注意到有区别。
我的python代码输出如下:
<body>\n<div id="root"></div>\n<!-- Google Analytics -->\n\n<!-- End Google Analytics -->\n\n\n\n<!-- pv5template --><!-- Mon Apr 29 2019 14:40:17 GMT+0200 (CEST) --><!-- b465253ce32a2c1e664af00ed756d25b830c890a --><!-- v-0.0.1770-rc2 --><link as="script" href="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js" rel="preload"/><link as="script" href="https://static1.dmcdn.net/playerv5/dmp.manifest.7fbdfdd01f6244e8feb4.es5.js" rel="preload"/><link as="script" href="https://static1.dmcdn.net/playerv5/dmp.vendor.6dc443eed0ba7568dbab.es5.js" rel="preload"/><link as="script" href="https://static1.dmcdn.net/playerv5/dmp.main.cbf70e2a7d9818475b7b.es5.js" rel="preload"/><link as="script" href="https://static1.dmcdn.net/playerv5/dmp.theme_neon.f7b007935e44806b2e97.es5.js" rel="preload"/><link href="https://dmxleo.dailymotion.com" rel="preconnect"/><link href="https://pebed.dm-event.net" rel="preconnect"/><link crossorigin="anonymous" href="https://static1.dmcdn.net" rel="preconnect"/><link href="https://graphql.api.dailymotion.com" rel="preconnect"/>\n\n \n\n<!-- Google Tag Manager (noscript) -->\n<noscript><iframe height="0" src="https://www.googletagmanager.com/ns.html?id=GTM-P8L2J6G&gtm_auth=-_fJL9BsWrxKWr76EuFTEA&gtm_preview=env-5&gtm_cookies_win=x" style="display:none;visibility:hidden" width="0"></iframe></noscript>\n<!-- End Google Tag Manager (noscript) -->\n</body>
重要的区别就在一开始。好像没有给我 id =“ root” 的内容。由于我的目标是分析“根”中元素的内容,因此我不得不问是否有办法获得代码的那部分?
答案 0 :(得分:1)
正如我在评论中所说,您可以使用div id=root
包获取selenium
的内容。
这是一个获得div
from selenium import webdriver
from bs4 import BeautifulSoup
browser=webdriver.Firefox()
browser.get('https://www.dailymotion.com/search/1234')
soup=BeautifulSoup(browser.page_source)
div = soup.find('div', {'id':'root'})
print(div)
然后,另一张卡在section
标签内。您只需要在div上应用find_all
方法:
for section in div.find_all('section'):
print(section)