我目前正在嘗試從網站上抓取我想要的資訊。
我想要的資訊包含在一個ul>li>em. 我以前刮過桌子,但我從來沒有刮過串列。
我應該如何抓取我想要的資訊?
另外,我想知道是否有辦法將所有內部文本放入<em>并放入dataframe.
<ul>基本上看起來是這樣的。
<ul class="reportData">
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
......
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
</ul>
uj5u.com熱心網友回復:
只需選擇您的<ul>并在這種情況下使用stripped_strings即可獲取串列中的所有文本:
data = soup.select_one('ul.reportData').stripped_strings
或更具體地list comprehension從所有em
data = [e.text for e in soup.select('ul.reportData em')]
例子
import pandas as pd
from bs4 import BeautifulSoup
html='''
<ul >
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
</ul>
'''
soup = BeautifulSoup(html)
data = soup.select_one('ul.reportData').stripped_strings
pd.DataFrame(data, columns=['date'])
輸出
| 日期 |
|---|
| 2015-12-28 |
| 2015-12-28 |
| 2015-12-28 |
| 2015-12-28 |
| 2015-12-28 |
uj5u.com熱心網友回復:
find_all回傳一個串列,你可以直接在 pandas 中匯入:
from bs4 import BeautifulSoup
import pandas as pd
html = '''<ul >
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
<li><em>2015-12-28</em></li>
</ul>'''
soup = BeautifulSoup(html)
df = pd.DataFrame([i.get_text() for i in soup.find('ul', class_='reportData').find_all('em')], columns=['date'])
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/448295.html
上一篇:修改CSV檔案[不能使用pandas或numpys]
下一篇:'AttributeError:'NoneType'objecthasnoattribute'find_all''在這段代碼中是什么意思?
