网络爬虫技术笔记——静态网页爬取

静态网页

含义:纯粹HTML格式,没有后台数据库、不含程序、不可交互

查看方式:鼠标右键+查看网页源代码

<html> </html>构成一个HTML标签

其中标签内含有<head>标签、<body>标签

<body>内含有<p>等

<p>内设计更多标签

相当于一个树

爬虫基本流程(编辑器:pycharm;环境:python)

发起请求——request库

import requests
#爬取目标网址
url='http://tipdm.com/'
#设置网页请求头
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 Edg/113.0.1774.42'}
#生成HTTP请求,设定请求头和反应时间,超过2s则停止运行
rq=requests.get(url,headers=headers,timeout=2)

获取相应内容

#查看状态吗
rq.status_code
#查看源代码
rq.text
#查看请求头
rq.headers

解析内容

方法一:

lxml.etree(解析内容)+xpath方法(指定位置)

from lxml import etree

with open('html_doc.html') as f:
    html_doc =f.read()
print(html_doc)

#解析网页=显示网址源代码——etree.HTML()
dom=etree.HTML(html_doc)


#查找标题
#获取存储位置,绝对路径
dom.xpath('/html/head/title')
# [<Element title at 0x1eb53997d80>]
#相对路径,两种方法
dom.xpath('//title')
# [<Element title at 0x1eb53997d80>]
dom.xpath('/html//title')
# [<Element title at 0x1eb53997d80>]
#获取文本内容,三种方法
dom.xpath('/html/head/title/text()')
# ["\n            The Dormouse's story\n        "]
dom.xpath('//title/text()')
# ["\n            The Dormouse's story\n        "]
dom.xpath('/html//title/text()')
# ["\n            The Dormouse's story\n        "]


#查找Elsie
#会出现三个姓名
dom.xpath('//body/p/a/text()')
# ['\n                Elsie\n            ', '\n                Lacie\n            ', '\n                Tillie\n            ']
#精准指定目标的两种方式
#加入顺序(序号)
dom.xpath('//body/p/a[1]/text()')
# ['\n                Elsie\n            ']
#加入属性值
dom.xpath('//body/p/a[@id="link1"]/text()')
# ['\n                Elsie\n            ']

Beautiful Soup解析网页+CSS Selector

#使用beautifulsoup解析网页,需要借用相应解释器
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc,'lxml')
type(soup)
# <class 'bs4.BeautifulSoup'>
#解析内容,直接.标签,不需要路径
soup.title
# <title>
#             The Dormouse's story
#         # </title>
soup.p
# <p class="title">
# <b>
#                 The Dormouse's story
#             </b>
# </p>
soup.a
# <a class="sister" href="http://example.com/elsie" id="link1">
#                 Elsie
#             </a>


#精准定位
#绝对路径
soup.select('html>head>title')
# [<title>
#             The Dormouse's story
#         </title>]

#相对路径
soup.select('body  a')
# [<a class="sister" href="http://example.com/elsie" id="link1">
#                 Elsie
#             </a>, <a class="sister" href="http://example.com/lacie" id="link2">
#                 Lacie
#             </a>, <a class="sister" href="http://example.com/tillie" id="link2">
#                 Tillie
#             </a>]
#最精准定位
#nth-child是一个关键词
soup.select('p>a:nth-child(1)')
# [<a class="sister" href="http://example.com/elsie" id="link1">
#                 Elsie
#             </a>]
soup.select('p>a[id="link1"]')
# [<a class="sister" href="http://example.com/elsie" id="link1">
#                 Elsie
#             </a>]
#加入标签索引获取内容
soup.select('p>a:nth-child(1)')[0].text
# '\n                Elsie\n            '
# 获取标签超链接
soup.select('p>a:nth-child(1)')[0].get('herf')

保存数据

with open ('web_data.txt','w',encoding='utf-8') as f:
    f.write(rq.text)

额外工具

 chardet库的detect函数可检测给定字符串的编码

import chardet
chardet.detect(rq.content)
{'encoding': 'utf-8', 'confidence': 0.99, 'language': ''}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
FPGA自学笔记——设计与验证JMB FPGA(可编程逻辑门阵列)是一种可编程的硬件平台,可以实现各种数字电路的设计与验证。本文将简要介绍使用FPGA自学设计与验证JMB(低功耗、高效能、集成度高的多媒体芯片)的过程。 首先,我们需要了解JMB的功能和特性。JMB是一种面向多媒体应用的芯片,具备低功耗、高效能和高集成度的优势。我们需要详细研究JMB的硬件架构和内部模块,包括处理器核、存储器模块、图像和音频处理模块等。 接下来,我们可以使用FPGA开发板来设计和验证JMB。首先,我们需要熟悉FPGA设计工具,例如Vivado或Quartus等。这些工具提供了图形化界面和硬件描述语言(HDL)等设计方法。我们可以使用HDL编写JMB的功能模块,并将其综合为FPGA可执行的位流文件。 在设计完成后,我们需要验证JMB的功能和性能。我们可以使用仿真工具(例如ModelSim或ISE Simulator)来模拟JMB在不同情况下的行为。通过设计测试程序并运行仿真,我们可以验证JMB的各个模块是否正确地工作,是否满足设计要求。 在验证完成后,我们可以将位流文件下载到FPGA开发板中进行智能芯片的物理实现和测试。通过与外部设备的连接以及相关测试程序的运行,我们可以验证JMB在实际硬件中的功能和性能。 总结起来,学习FPGA设计与验证JMB,我们需要熟悉JMB的硬件架构和内部模块,并使用FPGA开发工具进行设计与验证。通过仿真和物理实现测试,我们可以验证JMB的功能和性能。这些过程需要理论知识和实践经验的结合,希望这些笔记能够给你提供一些参考和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值