python简单网页爬虫

这篇具有很好参考价值的文章主要介绍了python简单网页爬虫。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、python爬虫手法

  • 正则匹配:难度较大,不建议
  • BeautifulSoup或者xpath:文档结构清晰【推荐】
    实际使用常常是:BeautifulSoup或者xpath匹配到对应的dom节点,然后正则提取想要的数据

二、BeautifulSoup / xpath 安装使用

(1)BeautifulSoup :
安装:
pip install lxml
pip install bs4
使用:

from bs4 import beautifulsoup

soup = BeautifulSoup(html, 'lxml')   # html是网页文本
p_list = soup.select('p')

三、BeautifulSoup 语法精髓

- 提供的用于数据解析的方法和属性:
	- soup.tagName:返回的是文档中第一次出现的tagName对应的标签(html标签)
	- soup.find():
		- find('tagName'):等同于soup.div
	- 属性定位:
		- soup.find('div',class_/id/attr='attrName'):返回符合要求的第一个标签
	- soup.find_all('tagName'):返回符合要求的所有标签(列表)

- select:
	- select('某种选择器(id,class,标签.·,选择器)·),返回的是一个列表。
	- 层级选择器:
		- soup.select('.className > ul > li > a'): >表示的是一个层级
		- soup.select('.className > ul a'):空格表示的多个层级
- 获取标签之间的文本数据:
	- soup.a.text/string/get_text()
	- text/get_text():可以获取某一个标签中所有的文本内容
	- string:只可以获取该标签下面直系的文本内容
- 获取标签中属性值:
	- soup.a['href '

四、xpath语法精髓

- 环境的安装:
	- pip install lxml
- 如何实例化一个etree对象:from lxml import etree
	- 1.将本地的htmL文档中的源码数据加载到etree对象中:
		etree.parse(filePath)
	- 2.可以将从互联网上获取的源码数据加载到该对象中
		etree.HTML('page_text')
		xpath('xpath表达式')
- xpath表达式【和linux的文件路径操作一样】:
	- / : 根节点,节点分隔符,
    - // : 任意位置,可以是多个层级
    - .   当前节点
    - ..  父级节点
    - @   属性定位,如:/div[@class='className']   tag[@attrName="attrValue"]
    - 索引定位: //div[@class="className"]/p[3]: 索引是从1开始的
- 取文本:
	- /text()获取的是标签中直系的文本内容
	- //text()标签中非直系的文本内容(所有的文本内容)
- 取属性:
	- /dattrName ==> img/src

五、爬虫例子代码

爬取国家重点保护野生植物的信息,网站:中国珍稀濒危植物信息系统文章来源地址https://www.toymoban.com/news/detail-475947.html

import json
from bs4 import BeautifulSoup
from lxml import etree
import requests
import re


def request_url(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
    }
    try:
        response = requests.get(url, headers = headers)
        if response.status_code == 200:
            return response.text
    except requests.RequestException as e:
        print('===>>>请求异常' + e)
        return None


def parse_result(html):
	"""使用BeautifulSoup进行解析html"""
    soup = BeautifulSoup(html, 'lxml')
    tr_list = soup.select('tr')
    for tr in tr_list:
        print("解析结果:" + str(tr))
        td_items = tr.select('.td2')
        if len(td_items) == 0:
            continue
        yield {
            '中文名': re.sub('\s', '', td_items[0].text),
            '拉丁名': re.sub('\s', '', td_items[1].text),
            '科名': re.sub('\s', '', td_items[2].text),
            'I级':  re.sub('\s', '', td_items[3].text),
            'II级': re.sub('\s', '', td_items[4].text),
        }

def xpath_parse_result(html):
	"""使用xpath进行解析html"""
    html_doc = etree.HTML(html)
    tr_list = html_doc.xpath('//body/form/div[@class="divmenuh"]//table[@class="table1"]//tr')
    for tr in tr_list:
        print("解析结果:" + str(tr))
        td_items = tr.xpath("./td[@class='td2']")
        if len(td_items) == 0:
            continue
        yield {
            '中文名': re.sub('\s', '', td_items[0].xpath(".//text()")[0]),
            '拉丁名': re.sub('\s', '', td_items[1].xpath(".//text()")[0]),
            '科名': re.sub('\s', '', td_items[2].xpath(".//text()")[0]),
            'I级':  re.sub('\s', '', td_items[3].xpath(".//text()")[0]),
            'II级': re.sub('\s', '', td_items[4].xpath(".//text()")[0]),
        }     

def plant_spider(page):
    url = 'http://www.iplant.cn/rep/protlist?page=' + str(page)
    html = request_url(url)
    if None == html:
        print("===>>>请求失败:" + url)
        return
    items = parse_result(html)    # 解析过滤我们想要的信息
    # items = xpath_parse_result(html)  # 使用xpath进行解析
    with open('国家重点保护野生植物(2021版).txt', 'a', encoding='UTF-8') as f:
        for item in items:
            print('开始写入数据 ====> ' + str(item))
            f.write(json.dumps(item, ensure_ascii=False) + '\n')

if __name__ == "__main__":
# 爬取国家重点保护野生植物的信息
	for i in range(1, 58):
        plant_spider(i)

到了这里,关于python简单网页爬虫的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 制作一个简单HTML个人网页网页(HTML+CSS)源码

    一个简单的HTML网页,可用于大学html期末作业,照片都是网上找的 看一下成品图: 主页代码,这里的link href=\\\"images/css.css\\\" rel=\\\"stylesheet\\\" type=\\\"text/css\\\" /是引入css样的,images里面装的是css文件(完整源码见文末)  

    2024年02月11日
    浏览(64)
  • ❤️创意网页:打造简洁美观的网页轮播图(HTML简单实现轮播图)操作简单可以直接使用

    ✨ 博主: 命运之光 🌸 专栏: Python星辰秘典 🐳 专栏: web开发(简单好用又好看) ❤️ 专栏: Java经典程序设计 ☀️ 博主的其他文章: 点击进入博主的主页 前言: 欢迎踏入我的Web项目专栏,一段神奇而令人陶醉的数字世界! 🌌 在这里,我将带您穿越时空,揭开属于

    2024年02月17日
    浏览(43)
  • 用js做一个简单的网页,用javascript做一个网页

    大家好,小编为大家解答用javascript写简单网页家乡的介绍代码的问题。很多人还不知道用javascript写简单网页小游戏,现在让我们一起来看看吧! 八、JavaScript基础 1.JavaScript JavaScript简称JS是用于制作网页的动态效果的,如:页面的弹出广告、浮动广告、下拉菜单、表单验证等

    2024年02月03日
    浏览(44)
  • 一个简单的HTML网页——传统节日春节网页(HTML+CSS)

    🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (

    2024年01月21日
    浏览(59)
  • 制作一个简单HTML个人网页网页(HTML+CSS)大话西游之大圣娶亲电影网页设计

    HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ❤ 【作者主页——🔥获取更多优质源码】 ❤ 【学

    2024年02月04日
    浏览(50)
  • 【Github】的简单使用(网页版)

    目录 Git和Github Github基础概念 注册Github账号 创建仓库及文件 新建仓库 新建文件 文件的编辑和删除 编辑或修改文件 删除文件 文件的上传 文件的查找及下载 文件的查找 文件的下载 Issues Fork 开源项目贡献流程 什么是Git Git是一个免费、开源的版本控制软件 什么是版本控制系

    2024年01月16日
    浏览(36)
  • 一个简单的HTML网页 、个人主页网页设计(HTML+CSS)

    🎉精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作

    2024年02月04日
    浏览(57)
  • 一个简单的HTML网页(千与千寻电影) 大二学生网页设计与制作 电影主题网页制作

    HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置,有div的样式格局,这个实例比较全面,有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 1 网页简介 :此作品为学生个人主页网页设计题材

    2024年02月06日
    浏览(51)
  • java Selenium 实现简单的网页操作

    官方文档 :入门指南 | Selenium  Selenium是一个用于Web应用测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。 所以使用这个前端测试话工具,可以自动化做很多事情,比如自动化抓取网页内容,俗称网络爬虫,其实搜索引擎本身就是一种网络爬虫技术

    2024年02月14日
    浏览(39)
  • HTML+CSS简单的网页制作期末作业——浙江旅游景点介绍网页制作

    家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法,如盒子的嵌套、浮动、margin、border、background等属性的使用,外部大盒子设定居中,内部左中右布局,下方横向浮动排列,大学学习的前端知识点和布局方式都有运用,CSS的代码量也很足、很细致,使用hover来完成

    2024年02月04日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包