python实现从web抓取文档的方法

yizhihongxing

下面是 Python 实现从 Web 抓取文档的方法的完整攻略:

安装请求库

请求库是 Python 抓取 Web 数据的重要工具,常见的有 requests、urllib 等。在本攻略中我们以 requests 为例,首先需要安装 requests。

安装 requests 的方法有很多,在命令行中可以使用 pip 工具安装:

pip install requests

发起请求并获取响应

我们可以使用 requests.get() 方法来发起一个 GET 请求,获取响应的 HTML 数据。比如,想要抓取网站 https://www.python.org/ 的 HTML 数据,可以使用以下代码:

import requests

url = "https://www.python.org/"
response = requests.get(url)

print(response.text)

上述代码会发起一个 GET 请求,并将响应的 HTML 数据打印到控制台上。

解析 HTML 数据

得到 HTML 数据之后,我们需要使用解析库将其解析成具有结构的数据,以方便我们进一步处理和分析。常见的解析库有 BeautifulSoup、lxml 等,我们以 BeautifulSoup 为例。

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, "html.parser")

# 获取网页标题
title = soup.title.string

# 获取网页所有链接
links = [link.get("href") for link in soup.find_all("a")]

print(title)
print(links)

上述代码使用 BeautifulSoup 将 HTML 数据解析成 BeautifulSoup 对象,可以通过 soup 对象获取网页标题和所有链接。

示例一:抓取豆瓣电影 Top250 数据

现在,我们来看一个实战示例,如何使用 Python 抓取豆瓣电影 Top250 的排名数据。

豆瓣电影 Top250 的排名数据页面为 https://movie.douban.com/top250,我们主要使用 requests 和 BeautifulSoup 两个库来实现。

import requests
from bs4 import BeautifulSoup

url = "https://movie.douban.com/top250"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

movie_list = soup.find_all("div", class_="info")
for index, movie in enumerate(movie_list):
    title = movie.find("span", class_="title").string
    rating = movie.find("span", class_="rating_num").string
    print("{}. {} - {}".format(index+1, title, rating))

上述代码首先发起请求,然后使用 BeautifulSoup 解析 HTML 数据,获取每部电影的标题和评分,最后打印排名结果。

示例二:抓取公众号历史文章列表

我们还可以使用 Python 抓取微信公众号的历史文章列表数据,以做数据分析或者二次开发。比如,我们想要获取某公众号历史文章列表数据,可以使用以下代码:

import requests
import re
from bs4 import BeautifulSoup

url = "https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MjM5MDMzNjAzMQ==&scene=124&#wechat_redirect"
cookies = {
    # 在浏览器登录微信公众号后,获取到以下 Cookies 值
    "devicetype": "Windows 7",
    "version": "62060201",
    "lang": "zh_CN",
    "pass_ticket": "xxxxxxxx",
    "wap_sid2": "xxxxxxxx",
    "reward_uin": "xxxxxx",
    "pgv_pvid": "xxxxxxxxxx",
    "tvfe_boss_uuid": "xxxxxxxxxxxxxxxx",
    "ua_id": "xxxxxxxxxxxxx"
}

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.36 Edge/16.16299"
}

response = requests.get(url, cookies=cookies, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")

articles = []
for article in soup.find_all("h4", class_="weui_media_title"):
    title = article.string
    link = article.parent.get("hrefs")
    articles.append((title, link))

print(articles)

上述代码通过模拟浏览器的 Cookies 和 User-Agent 信息,来登陆微信公众号并获取历史文章列表数据,使用 BeautifulSoup 解析 HTML 数据,最后打印文章数据。

通过上述两个示例,我们可以看到使用 Python 抓取 Web 数据的方法,同时需要注意 HTTP 请求头部、Cookies 等信息的模拟和使用,以确保能够正常抓取数据。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python实现从web抓取文档的方法 - Python技术站

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

相关文章

  • Python 实现向word(docx)中输出

    实现向Word(docx)中输出,需要使用Python中的三方库——python-docx,本文将给出完整的攻略。 准备工作 在开始之前,我们需要进行以下准备工作: 安装python-docx库 pip install python-docx 创建一个名为’demo.docx’的Word文档。这里我们可以手动创建一个空白的Word文档,并将它放置在py文件所…

    python 2023年6月5日
    00
  • Pyscript使用本地Pyodide配置步骤

    下面是使用本地Pyodide配置Pyscript的详细攻略: 准备工作 在开始配置Pyodide之前,需要确保电脑已经安装Python和pip,并且pip版本在>=19.0。还需要确保电脑已经安装了Git,在命令行中可以通过输入git测试是否已经安装成功。另外,建议将Git添加到系统环境变量中,以免程序在执行时出错。 步骤一:克隆pyscript-rs…

    python 2023年5月20日
    00
  • python黑魔法之编码转换

    Python黑魔法之编码转换: 什么是编码? 在计算机领域,编码是指在计算机内部处理和存储信息时所采用的二进制代码的方式。不同的国家、地区、场合所用的字符集和编码方案各不相同。而不同的编码方案之间是不能直接相互转换的,需要使用相应的工具进行转换。 为什么需要编码转换? 在日常开发中,我们可能会遇到需要将不同编码方式下的字符进行转换的情况,可能是因为程序与外部…

    python 2023年5月13日
    00
  • python爬虫数据采集ip被封一篇解决

    代理服务的介绍: 我们在做爬虫的过程中经常最初爬虫都正常运行,正常爬取数据,一切看起来都是美好,然而一杯茶的功夫就出现了错误。 如:403 Forbidden错误,“您的IP访问频率太高”错误,或者跳出一个验证码让我们输入,之后解封,但过一会又出现类似情况。 出现这个现象的原因是因为网站采取了一些反爬中措施,如:服务器检测IP在单位时间内请求次数超过某个阀值…

    爬虫 2023年4月11日
    00
  • 详解python数值与字符串高级用法

    详解Python数值与字符串高级用法 数值类型的高级用法 Python中内置了多种数值类型,包括整型、浮点型和复数等。在进行数值运算时,可以使用+、-、*、/等基本运算符。除了这些基本的运算符,数值类型还支持很多高级的用法。 divmod函数 divmod函数可以同时获得两个数的商和余数。具体使用方式如下: a = 13 b = 5 q, r = divmo…

    python 2023年6月3日
    00
  • 详解Python当中的字符串和编码

    下面是详解Python中的字符串和编码的完整攻略。 一、字符串类型 在Python中,字符串是一种不可变的类型,表示unicode编码的字符序列。字符串可以用单引号(‘)或双引号(“)包含,两者没有区别。例如: s1 = ‘Hello Python!’ s2 = "你好,Python!" 二、字符串编码 在计算机里,所有的信息都需要转换成…

    python 2023年5月18日
    00
  • ​python中pandas读取csv文件​时如何省去csv.reader()操作指定列步骤

    在Python中,Pandas是用于数据处理和分析的强力库,它简化了诸如CSV文件的常见数据格式的读取和操作。下面详细讲解如何使用Pandas读取CSV文件并指定要读取的列。 准备 在使用Pandas之前,需要先安装它。在终端或命令提示符下运行以下命令安装: pip install pandas 读取CSV文件 使用Pandas读取CSV文件非常简单。可以使…

    python 2023年5月18日
    00
  • NPM相关命令之报错node-gyp…的解决方法

    当我们在使用npm相关命令时,有时会遇到一些意外情况,比如在安装某个包时报错,其中的错误信息中可能会出现”node-gyp”相关的提示。这种情况下可以根据以下方法解决: 问题描述 报错信息如下所示: gyp ERR! configure error gyp ERR! stack Error: Can’t find Python executable &quo…

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