跳转至

第 22 天:网页抓取

📘 第22天

Python网页抓取

什么是网页抓取

互联网充满了大量的数据,这些数据可以用于不同的目的。要收集这些数据,我们需要知道如何从网站上抓取数据。

网页抓取是从网站提取和收集数据,并将其存储在本地机器或数据库中的过程。

在本节中,我们将使用beautifulsoup和requests包来抓取数据。我们使用的是beautifulsoup 4版本。

要开始抓取网站,你需要_requests_、beautifoulSoup4_和一个_网站

Bash
pip install requests
pip install beautifulsoup4

要从网站抓取数据,需要基本了解HTML标签和CSS选择器。我们使用HTML标签、类或/和ID来定位网站上的内容。 让我们导入requests和BeautifulSoup模块:

Python
import requests
from bs4 import BeautifulSoup

让我们声明一个url变量,用于我们要抓取的网站。

Python
import requests
from bs4 import BeautifulSoup
url = 'https://archive.ics.uci.edu/ml/datasets.php'

# 让我们使用requests的get方法从url获取数据
response = requests.get(url)
# 检查状态
status = response.status_code
print(status) # 200表示获取成功
Bash
200

使用beautifulSoup解析页面内容:

Python
import requests
from bs4 import BeautifulSoup
url = 'https://archive.ics.uci.edu/ml/datasets.php'

response = requests.get(url)
content = response.content # 我们从网站获取所有内容
soup = BeautifulSoup(content, 'html.parser') # beautiful soup将给我们一个解析的机会
print(soup.title) # <title>UCI Machine Learning Repository: Data Sets</title>
print(soup.title.get_text()) # UCI Machine Learning Repository: Data Sets
print(soup.body) # 给出网站上的整个页面
print(response.status_code)

tables = soup.find_all('table', {'cellpadding':'3'})
# 我们定位cellpadding属性值为3的表格
# 我们可以使用id、class或HTML标签进行选择,有关更多信息,请查看beautifulsoup文档
table = tables[0] # 结果是一个列表,我们从中提取数据
for td in table.find('tr').find_all('td'):
    print(td.text)

如果你运行这段代码,你会发现提取工作只完成了一半。你可以继续完成它,因为这是练习1的一部分。 参考beautifulsoup文档获取更多信息。

🌕 你非常特别,你每天都在进步。你只剩下八天就要达到伟大的境界了。现在做一些练习来锻炼你的大脑和肌肉。

💻 练习:第22天

  1. 抓取以下网站并将数据存储为json文件(url = 'http://www.bu.edu/president/boston-university-facts-stats/')。
  2. 提取此url中的表格(https://archive.ics.uci.edu/ml/datasets.php)并将其更改为json文件。
  3. 抓取总统表并将数据存储为json(https://en.wikipedia.org/wiki/List_of_presidents_of_the_United_States)。这个表格结构不是很规整,抓取可能需要很长时间。

🎉 恭喜!🎉

<< 第21天 | 第23天 >>

评论