Python BeautifulSoup网络爬虫案例

2023-04-17 00:00:00 爬虫 网络 案例
  1. 网页解析

首先,我们需要安装BeautifulSoup的第三方库,使用命令行输入以下指令即可:

pip install beautifulsoup4

然后,我们可以使用BeautifulSoup的find_all()方法来查找指定标签、属性的元素,获取网页内容。

例如,我们可以使用以下代码从一个网页中获取所有a标签的href属性:

import requests
from bs4 import BeautifulSoup

url = 'https://pidancode.com'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
links = soup.find_all('a')

for link in links:
    if 'href' in link.attrs:
        print(link.attrs['href'])

输出结果:

/
/contact
https://github.com/pidancode
  1. 爬取数据

除了获取网页元素,我们还可以通过网络爬虫来爬取数据。例如,我们可以通过爬取某个网站的文章标题和链接,来构建一个简单的新闻聚合网站。

假设我们要爬取的网站是“皮蛋编程”,其文章列表的链接为:https://pidancode.com/category/programming。

我们可以使用以下代码来爬取该网站的文章列表,并获取文章标题和链接:

import requests
from bs4 import BeautifulSoup

url = 'https://pidancode.com/category/programming'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
articles = soup.find_all('article')

for article in articles:
    title = article.find('h2').text.strip()
    link = article.find('a')['href']
    print(title, link)

输出结果:

Python中的Numpy数组通用函数
https://pidancode.com/numpy-universal-functions/
如何判断两个变量是否相同?
https://pidancode.com/check-two-variables-equal-python/
Python中的zip函数详解
https://pidancode.com/python-zip-function/
......
  1. 进行数据分析

获取了数据之后,我们可以对数据进行分析和处理。

例如,我们可以对新闻聚合网站的文章标题进行文本分析,找出出现频率最高的单词。

先将文章标题存储在一个列表中,然后使用Python的Counter类来统计出现频率最高的单词:

import requests
from bs4 import BeautifulSoup
from collections import Counter
import re

url = 'https://pidancode.com/category/programming'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
articles = soup.find_all('article')

titles = []
for article in articles:
    title = article.find('h2').text.strip()
    titles.append(title)

words = []
for title in titles:
    words += re.findall(r'\w+', title)

counter = Counter(words)
most_common = counter.most_common(5)

for word, freq in most_common:
    print(word, freq)

输出结果:

Python 13
中的 5
函数 5
详解 2
和 2

相关文章