吉安做网站的公司晋中公司做网站
news/
2025/9/23 17:19:26/
文章来源:
吉安做网站的公司,晋中公司做网站,网站添加模块,cms建站系统是什么数据采集与预处理02 #xff1a;网络爬虫实战
爬虫基本知识
1 HTTP的理解
URL uniform resource locator. 是统一资源定位符#xff0c;URI identifier是统一资源标识符。几乎所有的URI都是URL。
URL前部一般可以看到是HTTP还是HTTPS#xff0c; 这是访问资源需要的协议…数据采集与预处理02 网络爬虫实战
爬虫基本知识
1 HTTP的理解
URL uniform resource locator. 是统一资源定位符URI identifier是统一资源标识符。几乎所有的URI都是URL。
URL前部一般可以看到是HTTP还是HTTPS 这是访问资源需要的协议类型。HTTP hyper text transfer protocol 是客户端和服务器端请求和应答的标准是互联网中应用最为广泛的一种协议。
HTTPS是以安全为目标的HTTP通道加入了SSL层。
2 网页基础知识
网页的组成分为三大部分HTML、CSSCascading Style sheets层叠样式表、javascript。
在网页中组织页面的对象被渲染成一个树形结构用来标识文档中对象的准确模型称为文档对象模型 Document Object Model DOM。 3 爬虫基本原理
网络爬虫本质上就是获取网页并提取和保存信息的自动化程序。
爬虫的首要工作就是获取网页源代码再从中提取想要的数据。urllib requests等库都能够实现HTTP请求的操作。
获取网页源代码后接下来的工作就是分析网页源代码最通用的方式是使用正则表达式。在python中使用BeautifulSoup PyQuery LXML等库可以更高效的从源代码中提取网页信息。
提取信息之后可以将数据保存到本地以便后续使用。 4. 基本库的使用
以下基于python3.8
4.1 urllib
urllib库是python中一个功能强大用于操作URL并在制作爬虫过程中经常用到的库。
发送请求
import urllib.requestrurllib.request.urlopen(HTTP://www.python.org/)
print(r)读取响应内容
import urllib.request
urlHTTP://www.python.org/
with urllib.request.urlopen(url) as r:r.read()r.read() 将相应内容读到内存。
传递URL参数
import urllib.request
import urllib.parse
paramsurllib.parse.urlencode({q:urllib,check_keywords:yes,area:default})
urlHTTPS://docs.python.org/3/search.html?{}.format(params)
rurllib.request.urlopen(url)传递中文参数
import urllib.request
searchwordurllib.request.quote(input(请输入要查询的关键字:))
urlHTTPS://cn.bing.com/images/async?q{}first0mmasync1.format(searchword)
rurllib.request.urlopen(url)
print(r)定制请求头
import urllib.request
url链接
headers{
User-Agent:……
Referer:……
requrllib.request.Request(url,headersheaders)
rurllib.request.urlopen(req)
}传递POST请求
import urllib.request
import urllib.parse
url链接
post{
username:xxx
password:xxxxx
}postdataurllib.parse.urlencode(post).encode(utf-8)
requrllib.request.Request(url,postdata)
rurllib.request.urlopen(req)下载远程数据到本地
urllib.request.urlretrieve(url,python-logo.png)
另外患有设置代理、异常处理和Cookie的使用不再赘述。
4.2 BeautifulSoup
BeautifulSoup提供一些简单的python方式的函数处理导航、搜索、修改分析树等功能。
创建BeautifulSoup对象
from bs4 import BeautifulSoup
soupBeautifulSoup(html)
print soup.prettify()四大对象类
BeautifulSoup将复杂的HTML文档转换称为一个复杂的树形结构归纳为4种Tag , NavigableString, BeautifulSoup, Comment.
Tag就是一个个标签。
print soup.title
print soup.head
print soup.a
print soup.pNavigalbeString
不仅可以得到标签内容还可以通过“.string”获取标签内部的文字。
print soup.p.stringBeautifulSoup
BeautifulSoup对象表示一个文档的全部内容。
print type(soupp.name)comment
comment对象是一个特殊类型的NavigableString对象其输出内容不包括注释符号。
遍历
Tag的contents属性可以使Tag的子节点以列表方式输出。
print soup.head.contents
print soup.head.contents[0]Tag的children返回的不是一个list而是list生成器对象可以用来遍历获取所有子节点。
descendants可以对所有子孙结点进行递归循环。
如果Tag只有一个NavigableString类型的子节点那么Tag可以使用string得到子节点。
使用.stripped_strings可以去除多余空白内容。
使用元素的.parent属性可以获取父节点。
搜索
使用 find_all()搜索
name参数 用来查找所有名称为name的tag。
#传字符串
soup.find_all(b)# 传正则表达式
import re
for tag in soup.find_all(re.compile(^b)):print(tag.name)#传列表
soup.find_all([a,b])#传True
for tag in soup.find_all(True):print(tag.name)attrs参数
data_soup.find_all(data-foovalue)data_soup.find_all(attrs{data-foo:value})recursive参数
soup.html.find_all(title,recursiveFalse)
# recursiveTrue意味着直接检索子节点text参数
通过text参数可以搜索文档中的字符串内容。
soup.find_all(texttest1)limit参数
soup.find_all(a,limit2)
#限制返回数量select()
使用soup.select()方法从css中筛选返回类型是list。
print soup.select(title)
print soup.select(a)print soup.select(#id值)print (headtitle)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/913291.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!