爬虫中的相关解析和遇到的问题

举报
相信光的奥特王小懒 发表于 2022/09/17 17:28:06 2022/09/17
【摘要】 爬虫的使用可以帮助我们最大效率解决一些事情.

1. Xpath解析

  • 1.安装lxml模块
  • 2.pip install lxml (此处如果下载速度比较慢,可以通过查看之前的博客所写的方法)
  • 3.导入extree(from lxml import etree)
  • 4.tree = extree.XML()
  • 5.tree = extree.html()
  • 6.tree = extree.parse()
  • 然后通过tree即可进行相关的xpath操作

2. 正则表达式re模块

当我们需要调用的时候可以 通过pandas包进行直接调用


  • 1.需要导入的包是csv包,表示可以将相关信息存入csv表中
  • 2.需要导入的包是re包,用于正则表达式的书写
  • 3.需要导入额包是requests包,用于获取网页源代码

获取网页源码的代码是:

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.74 Safari/537.36"
}
resp = requests.get(url=url,headers=headers)
print(resp.text)

需要注意的是:正则表达式的书写方式有很多,一定要注意最后文件的关闭,防止被IP禁止或者占用内存资源.

我们可以将我们爬取的内容存放入excel或者csv表中,方便之后进行数据分析.

f = open("data.csv", mode="w", encoding="utf-8", newline='')
csvlist = csv.writer(f)

3. Bs4使用

  • 1.通过pip install bs4将bs4包进行安装

  • 2.导入包from bs4 import BeautifulSoup

  • 3.把页面源代码交给BeautifulSoup进行处理, 生成bs对象 page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器,如果不指定解析器不会报错,但是会爆红

  • 4.从bs对象中查找数据

    find(标签, 属性=值)

    find_all(标签, 属性=值)

  • 5.在指定属性的过程中,例如class和id等是python的关键字,所以直接使用python关键字会发现报错,有两种解决方式: 第一种是在关键字后加_可解决问题,例如:class_ table = page.find("table", class_="hq_table") 第二种是使用attrs{},例如: table = page.find("table", attrs={"class": "hq_table"})

4. 常见的问题


请求头中最常⻅的⼀些重要内容(爬⾍需要):
User-Agent : 请求载体的身份标识(⽤啥发送的请求)
Referer: 防盗链(这次请求是从哪个⻚⾯来的? 反爬会⽤到)
cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token)
响应头中⼀些重要的内容:
cookie: 本地字符串数据信息(⽤户登录信息, 反爬的token)
各种神奇的莫名其妙的字符串( 防⽌各种攻击和反爬)
请求方式:
1.GET方式(显示提交)
2.POST方式(隐示提交,请求参数加密)
在正则表达式中,findall返回的是列表,在编写代码的过程中如果碰到有波浪线的情况可以加个r只有好处没有坏处.

lst = re.findall(r"\d+", "5点之前. 你要给我5000万")

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。