我应该如何抓取 <ul> 中的所有 <em> 标签内部文本并将它们制作成 pandas 数据框?
How should I scrape all <em> tag innertexts within a <ul> and make them into a pandas dataframe?
我目前正在尝试从网站上抓取我想要的信息。
我想要的信息包含在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>
只需 select 您的 <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 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>
'''
soup = BeautifulSoup(html)
data = soup.select_one('ul.reportData').stripped_strings
pd.DataFrame(data, columns=['date'])
输出
date
2015-12-28
2015-12-28
2015-12-28
2015-12-28
2015-12-28
find_all
returns一个列表,可以直接导入pandas:
from bs4 import BeautifulSoup
import pandas as pd
html = '''<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>'''
soup = BeautifulSoup(html)
df = pd.DataFrame([i.get_text() for i in soup.find('ul', class_='reportData').find_all('em')], columns=['date'])
我目前正在尝试从网站上抓取我想要的信息。
我想要的信息包含在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>
只需 select 您的 <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 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>
'''
soup = BeautifulSoup(html)
data = soup.select_one('ul.reportData').stripped_strings
pd.DataFrame(data, columns=['date'])
输出
date |
---|
2015-12-28 |
2015-12-28 |
2015-12-28 |
2015-12-28 |
2015-12-28 |
find_all
returns一个列表,可以直接导入pandas:
from bs4 import BeautifulSoup
import pandas as pd
html = '''<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>'''
soup = BeautifulSoup(html)
df = pd.DataFrame([i.get_text() for i in soup.find('ul', class_='reportData').find_all('em')], columns=['date'])