Python网络数据采集读书笔记-1

简介: Python网络数据采集读书笔记-1

第一部分 创建爬虫

第一章 初见网络爬虫

1.1 网络连接

# py3 urllib
from urllib.request import urlopen
url = "http://www.baidu.com"
html = urlopen(url)
print(html.read())

官方文档:https://docs.python.org/3/library/urllib.html


1.2 BeautifulSoup

安装:

pip install beautifulsoup4

官方中文文档:

https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/index.html


推荐使用虚拟环境: Mac安装python环境以及虚拟环境


# py3 BeautifulSoup
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = "http://www.baidu.com"
html = urlopen(url)
soup = BeautifulSoup(html.read()) # "html.parser"
print(soup.title)
# <title>百度一下,你就知道</title>

增加异常处理


# 异常处理
# 1、 服务器不存在
# 2、 网页不存在
# py3
from urllib.request import urlopen
from bs4 import BeautifulSoup
url = "http://www.baidu.com"
try:
    html = urlopen(url)
except Exception as e:
    print(e)
else:
    soup = BeautifulSoup(html.read(), "html.parser")
    print(soup.title)  # <title>百度一下,你就知道</title>
    tag = soup.xxxxx
    print(type(tag))  # <class 'NoneType'>
finally:
    pass

重新组织代码

# py3
from urllib.request import urlopen
from urllib.error import HTTPError, URLError
from bs4 import BeautifulSoup
def getTitle(url):
    """
    异常处理
    1、 服务器不存在
    2、 网页不存在
    3、 标签不存在
    """
    try:
        html = urlopen(url)
    except (HTTPError, URLError) as e:
        return None
    try:
        soup = BeautifulSoup(html.read(), "html.parser")
        title = soup.head.title
    except AttributeError as e:
        return None
    return title
url = "http://www.baidu.com"
title = getTitle(url)
if title == None:
    print("title is None")
else:
    print(title)
    # < title > 百度一下,你就知道 < / title >

第二章 复杂HTML解析

2.1 标签过滤

find, find_all 参数
name=None,      标签,或运算
attrs={},       属性,与运算
recursive=True, 递归 
text=None,      文本
limit=None,     范围限制  find <=> find_all(limit=1) 
**kwargs,       关键字 class_
url = "http://www.pythonscraping.com/pages/warandpeace.html"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
name_list = soup.find_all("span", {"class": "green"})
for name in name_list:
    print(name.get_text())
h1 = soup.find(text="Chapter 1")
print(h1)

2.2 BeautifulSoup对象

四个对象:
BeautifulSoup   文档
Tag             标签
NavigableString 标签文字
Comment         注释

2.3 导航树

# 孩子和后代
children 
descendants 
# 兄弟
next_siblings 
previous_siblings 
next_sibling
previous_sibling
# 父亲
parent
parents
url = "http://www.pythonscraping.com/pages/page3.html"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
table = soup.find("table", {"id": "giftList"})
from bs4.element import Tag
# for tr in table.children:
#     if isinstance(tr, Tag):
#         for td in tr.children:
#             print(td.get_text(), end="|")
#     print("\n")
img = table.find("img", {"src": "../img/gifts/img1.jpg"})
price = img.parent.previous_sibling.get_text()
print(price)

2.4 正则表达式

官方文档:https://docs.python.org/3/library/re.html

参考文章:Python编程:re正则库


正则邮箱:
[A-Za-z0-9\._+]+@[A-Za-z0-9]+\.(com|cn|org|edu|net)

import re


url = "http://www.pythonscraping.com/pages/page3.html"
html = urlopen(url)
soup = BeautifulSoup(html, "html.parser")
regex = re.compile(r"\.\.\/img\/gifts\/img.*\.jpg")
imgs = soup.find_all("img", {"src": regex})
for img in imgs:
    print(img.get("src")) # 获取属性 attrs

2.5 lambda表达式

# 返回True 或 False
tags = soup.find_all(lambda tag: len(tag.attrs) == 2)
print(tags)

2.6 html解析库

lxml: http://lxml.de/

html.parser:https://docs.python.org/3/library/html.parser.html

相关文章
|
3月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
459 55
|
2月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
248 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
18天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
害虫识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了12种常见的害虫种类数据集【"蚂蚁(ants)", "蜜蜂(bees)", "甲虫(beetle)", "毛虫(catterpillar)", "蚯蚓(earthworms)", "蜚蠊(earwig)", "蚱蜢(grasshopper)", "飞蛾(moth)", "鼻涕虫(slug)", "蜗牛(snail)", "黄蜂(wasp)", "象鼻虫(weevil)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Djan
58 1
基于Python深度学习的【害虫识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
18天前
|
监控 算法 安全
公司电脑网络监控场景下 Python 广度优先搜索算法的深度剖析
在数字化办公时代,公司电脑网络监控至关重要。广度优先搜索(BFS)算法在构建网络拓扑、检测安全威胁和优化资源分配方面发挥重要作用。通过Python代码示例展示其应用流程,助力企业提升网络安全与效率。未来,更多创新算法将融入该领域,保障企业数字化发展。
40 10
|
1月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
110 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
21天前
|
机器学习/深度学习 API Python
Python 高级编程与实战:深入理解网络编程与异步IO
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发和 API 设计。本文将深入探讨 Python 在网络编程和异步IO中的应用,并通过实战项目帮助你掌握这些技术。
|
2月前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
87 14
|
3月前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
251 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
3月前
|
算法 网络协议 Python
探秘Win11共享文件夹之Python网络通信算法实现
本文探讨了Win11共享文件夹背后的网络通信算法,重点介绍基于TCP的文件传输机制,并提供Python代码示例。Win11共享文件夹利用SMB协议实现局域网内的文件共享,通过TCP协议确保文件传输的完整性和可靠性。服务器端监听客户端连接请求,接收文件请求并分块发送文件内容;客户端则连接服务器、接收数据并保存为本地文件。文中通过Python代码详细展示了这一过程,帮助读者理解并优化文件共享系统。
|
3月前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
137 3

热门文章

最新文章