Python制作简单的网页爬虫

下面我来详细讲解一下Python制作简单的网页爬虫的完整攻略。

步骤一:准备工作

在开始编写网页爬虫之前,我们需要进行一些准备工作。

  • 安装Python:我们需要先安装Python环境,推荐使用Python3以上版本。
  • 安装爬虫库:Python有很多爬虫库,比如requests、BeautifulSoup、Scrapy等,需要根据需要选择合适的进行安装和使用。比较常用的库是requests和BeautifulSoup,可以使用pip进行安装:

    pip install requests
    pip install beautifulsoup4

  • 了解网页结构:在爬取网页信息之前,需要了解所爬取网页的结构,包括HTML标签、CSS选择器等。

步骤二:编写代码

  • 使用requests库进行网页请求,获取网页内容。

```python
import requests

url = "http://www.example.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
content = response.text
```

  • 使用BeautifulSoup库进行网页解析,获取所需要的信息。

```python
from bs4 import BeautifulSoup

soup = BeautifulSoup(content, "html.parser")
title = soup.title.string
links = soup.find_all("a")
for link in links:
print(link.get("href"))
```

以上代码实现了请求网页并获取网页内容,然后使用BeautifulSoup进行解析,并获取网页标题和所有链接。输出结果如下:

http://www.example.com/about
http://www.example.com/contact
http://www.example.com/faq

下面再给一个实际应用的案例。

示例一:爬取豆瓣电影排行榜

以下是爬取豆瓣电影TOP250排行榜的完整代码:

import requests
from bs4 import BeautifulSoup

url = "https://movie.douban.com/top250"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
content = response.text

soup = BeautifulSoup(content, "html.parser")
items = soup.find_all("div", class_="item")
for item in items:
    title = item.find("span", class_="title").string
    rating = item.find("span", class_="rating_num").string
    print(title + " " + rating)

以上代码实现了请求豆瓣电影TOP250页面并获取网页内容,然后使用BeautifulSoup进行解析,并获取电影名称和评分。输出结果如下:

肖申克的救赎 9.7
霸王别姬 9.6
...

示例二:爬取腾讯新闻列表页

以下是爬取腾讯新闻列表页的完整代码:

import requests
from bs4 import BeautifulSoup

url = "http://news.qq.com/"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}
response = requests.get(url, headers=headers)
content = response.text

soup = BeautifulSoup(content, "html.parser")
items = soup.find_all("div", class_="Q-tpList")
for item in items:
    title = item.find("a").string
    link = item.find("a").get("href")
    print(title + " " + link)

以上代码实现了请求腾讯新闻页面并获取网页内容,然后使用BeautifulSoup进行解析,并获取新闻标题和链接。输出结果如下:

教育部:专业设置要有常识 功能定位要准确 http://news.qq.com/a/20170824/038413.htm
两万多元的大盘鸡 “高峰”开路费突破3千元 http://news.qq.com/a/20170824/005948.htm
...

步骤三:优化代码

网页爬虫一般需要进行多次请求,我们需要保证代码简洁、稳定。因此需要进行一下优化:

  • 为requests模块设置超时时间
  • 使用异常处理来处理网络连接和解析异常

优化后的豆瓣电影排行榜爬虫代码如下:

import requests
from bs4 import BeautifulSoup

def get_content(url, headers):
    try:
        response = requests.get(url, headers=headers, timeout=30)
        if response.status_code == 200:
            return response.text
        else:
            return None
    except:
        return None

def parse_content(content):
    try:
        soup = BeautifulSoup(content, "html.parser")
        items = soup.find_all("div", class_="item")
        for item in items:
            title = item.find("span", class_="title").string
            rating = item.find("span", class_="rating_num").string
            print(title + " " + rating)
    except:
        pass

url = "https://movie.douban.com/top250"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3"}

content = get_content(url, headers)
if content is not None:
    parse_content(content)
else:
    print("Request failed")

以上代码在原有基础上使用了异常处理,并对requests库进行了超时时间设置,这样可以更好地保证代码稳定性和安全性。

总结

以上就是Python制作简单的网页爬虫的完整攻略。要制作一个有效的网页爬虫,需要了解网页结构,选取适合自己的爬虫库,并注意代码的优化。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python制作简单的网页爬虫 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • Python随机值生成的常用方法总结

    Python随机值生成的常用方法总结 在Python中,随机值的生成十分重要,常用于模拟实验、数据采样等场景。本文总结了Python中常用的随机数生成方法,包括随机整数、随机浮点数、随机字符等。 随机整数 randint() randint(a,b)方法可以生成从a到b范围内的随机整数,包括a和b两个端点。 示例: import random result …

    python 2023年5月14日
    00
  • 树莓派采用socket方式文件传输(python)

    针对这个话题我会提供下面的完整攻略: 树莓派采用socket方式文件传输(python) 简介 Socket是计算机网络中的一个概念,它通常被称作”套接字”,用于描述IP地址和端口,是一个通信链的句柄。Socket为应用程序提供了统一的网络编程接口,用于在应用层进行网络通信。在本攻略中,我们将使用Python编写代码,利用Socket在树莓派上进行文件传输,…

    python 2023年6月3日
    00
  • Python爬虫准备——requests和bs4安装

    昨天想要写一下Python爬虫试试,但没想到导入的包并没有安装好。有两个这样的包,requests和bs4,requests是网络请求,bs4是html解析器。 那么接下来就说一下如何安装这两个包 一、用指令安装(pip install ……)   大体上来说就是,打开DOS(命令提示符),进入到你安装Python环境的目录下,找到Scripts目录并进入,…

    爬虫 2023年4月11日
    00
  • 为什么黑客都用python(123个黑客必备的Python工具)

    黑客使用Python的原因: Python是一种易于学习和使用的编程语言,具有简洁的语法和丰富的库,可以快速开发和测试黑客工具。 Python具有跨平台性,可以在Windows、Linux和Mac等操作系统上运行,方便黑客在不同的平台上使用。 Python具有强大的网络编程能力,可以轻松地进行网络扫描、端口扫描、漏洞扫描等操作。 Python具有丰富的第三方…

    python 2023年5月15日
    00
  • Python生成随机数的一个标准库-random

    1.介绍 Random库Python中用于生成随机数的一个标准库。计算机没有办法产生真正的随机数,但它可以产生伪随机数。 伪随机数是计算机按照一定的运算规则产生的一些数据,只不过这些数据表现为随机数的形式。计算机中采用梅森旋转算法生成为随机序列,序列中的每一个元素就是伪随机数,由于计算机不能产生真正的随机数,所以伪随机数也就被称为随机数。 Random库包含…

    python 2023年4月27日
    00
  • Python对Excel按列值筛选并拆分表格到多个文件的代码

    我来详细讲解一下Python对Excel按列值筛选并拆分表格到多个文件的代码的完整实例教程。 示例说明 在本教程中,我们将以一个实例来说明如何使用Python对Excel表格按列值进行筛选并拆分成多个文件。假设我们有一张Excel表格,其中包含了两列数据:日期和销售额。现在我们需要按照日期来筛选表格,并将符合条件的行拆分成多个Excel文件。 我们的示例Ex…

    python 2023年5月13日
    00
  • Python如何读取csv文件时添加表头/列名

    当Python读取CSV文件时,默认情况下没有表头/列名。但是,在处理CSV文件时,表头非常重要,因为它可以为每列提供有意义的名称,使得后续的数据处理变得更加易于理解和稳定。在Python中,可以通过许多方法向CSV文件中添加表头/列名。这里提供两种常见的实现方式。 方法一:使用csv.DictReader()函数添加表头/列名 csv.DictReader…

    python 2023年6月3日
    00
  • Python虚拟机字节码教程之装饰器实现详解

    Python虚拟机字节码教程之装饰器实现详解 什么是Python装饰器 装饰器是一个返回函数的高阶函数,它用于函数的修饰和扩展。通过装饰器我们可以在不改变原函数代码的情况下,对函数的功能进行扩展,比如添加日志、性能分析、权限校验等。 装饰器的基本语法如下: def decorator(func): def wrapper(*args, **kwargs): …

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部