首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >入门爬虫笔记

入门爬虫笔记

作者头像
y191024
发布2022-09-20 19:07:43
发布2022-09-20 19:07:43
8880
举报

由于上一篇的排版被这个公众号的编辑器弄得和💩一样,我就重新发一次,真的太难用了公众号平台自带的编辑器

学习了一小段时间的爬虫,跟着视频学习,顺便跟着记了一些笔记,现在记录一下。

爬虫入门: 1.指定url 2.UA(User-Agent)伪装,将请求的载体标识伪装成浏览器 3.发起请求get(url, params, headers),post(url,data,headers) 4.获取响应的请求(response = ....text/json()) 5.进行数据解析 6.持久化存储

with open()...json.dump() 数据解析: 聚焦爬虫:爬取页面中指定的页面内容 原理: 1.标签定位 2.提取标签 3.标签属性中存储的数据值 数据解析分类: -正则 -bs4 -bs4数据解析原理: 1.实例化一个beautiful soup对象,并且将页面源码数据加载到该对象中 2.通过调用bs对象中相关的属性或者方法进行标签定位和数据提取 -环境安装 1.pip install bs4 2.pip install lxml -如何实例化BeautifulSoup对象:

-from bs4 importBeautifulSoup -对象的实例化 1.将本地的html文档中的数据加载到该对象中 withopen(r"sougou.html","r",encoding="utf-8") as fp: soup =BeautifulSoup(fp, "lxml")

2.将互联网上获取的页面源码加载到该对象中 page_text = response.text

soup =BeautifulSoup(page_text, "lxml")

-提供的用于数据解析的属性和方法: soup.tagName:返回的是文档中第一次出现tagName对应的标签 soup.find("tagName")

属性定位: soup.find("div",class_/id/attr="...") soup.find_all():返回符合要求的所有标签(列表)

-select -select("某种选择器(#id/.class/标签...)"),返回的是一个列表

-层级选择器eg: soup.select(".wrapper> .header > .top-nav > ul > li")[0] (类用. id用# 标签不用任何前缀 注意 > 两侧要有空格返回的是一个列表)后面可以加索引,提取特定位置的数据

-获取标签之间的文本数据 soup.a.text/string/get_text()

text/get_text():可以获取某一标签下的所有文本内容 string:只可以获取该标签下直系的文本内容 -获取标签中属性值 soup.a["href"] -xpath(***):最常用且最高效便捷的一种解析方式 xpath解析原理: 1.实例化一个etree对象,且需要将被解析的页面源码数据加载到该对象中 2.调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获 环境的安装: -pip install lxml -from lxml import etree 如何实例化一个对象: 1.将本地的html中的源码数据加载到etree对象中

parser=etree.HTMLParser(encoding='utf-8')

r=etree.parse('xxx.html',parser=parser) result =r.etree.xpath("/.../...") 2.将从互联网上获取的源码加载到对象中 etree.HTML("page_text") -xpath表达式 /:表示的是从根节点开始定位,表示的是一个层级 //:表示的是多个层级 相当于bs4中的空格/表示的是从任意位置开始定位

属性定位:

//div[@class="xxx"]tag[@attrName="xxx"] 定位: 1. 最左边:从根节点开始进行定位/html/body/div 在中间:/表示一个层级 例如:/html/body/div 2. ① //表示多个层级 例如:/html//div ② //可以表示从任意位置开始定位 例如://div ③ ./表示从当前目录开始 例如:div.xpath('./ul')表示之前取到的div下的ul 索引定位:xpath的索引从1开始s=result.xpath("/html//div//li[3]")

取文本:/text() 不是直系的标签就用//text()

取属性:

/@attrName ===>//li[3]//@href 中文乱码解决方法:

.encode("ISO-8859–1").decode("gbk")

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡不着所以学编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档