爬虫简单语法

一、requests(适用于爬取静态网页)

1.get

requests.get(参数)

参数可以是:

接收一个网址,url {

在请求某个查询时,在通用网址后+?query=查询的内容

比如:

在搜狗引擎中,搜索,

content = input("请输入你要搜索的内容")

url = "https://www.sogou.com/web?query={content}"

在百度中:

content = input("请输入你要搜索的内容")

url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=baidu&wd="

}

权限人 headers (有时候不能直接爬取需要加上)

多参数 params (字典形式,当网址太长,?后面带有很多参数时候,可以找到Query String Parameters,进而找到对应的参数,定义成字典形式传参)

总形式:

requests.get(url,headers=,params=)

返回:

查询页面的源码

根据不同编码形式,有utf-8、gbk等,通过charset查看

返回值可以通过.text,.json()等获取文本或者json形式内容

2.post

requests.post(参数)

参数可以是:

大致和get一样

例外:

参数:

查看kw

传参data=

总形式:

requests.post(url,headers=,data=)

注意点:

网址有的隐藏在sug中,不能直接得到

二、对爬取内容筛选关键信息

1.re

通过正则表达式将获取到的内容进行筛选提取

语法规则:

  1. re.compile("")

  1. 括号里的引号是单引号还是双引号根据内容中的引号形式而定,取相反

  1. 引号中内容:

通过.*?懒惰匹配得到关键信息,若想分组提取出来,用(?P<组名>.*?)

2.bs4

通过bs4模块的BeautifulSoup进行筛选提取

语法规则:

  1. BeautifulSoup(获取的网页内容, "html.parser")

  1. html.parser 是网页内容解析器,返回解析后的结果

  1. 需要对前端的语法了解一丢丢,比如标签,属性......利用这些特性取筛选提取内容

  1. 最常用的就是.find()和.find_all(),一个是找到一个就停止,一个是找到所有满足条件的内容,由于参数一致,以find()函数讲解

  1. .find(参数1,attrs={参数2})

参数1是带引号的标签,比如"div", "a", "img"......;

参数2是字典形式的属性值,比如"class": "people", "color": "red"......可以划定范围;

3.xpath

通过lxml模块中的etree的函数xpath函数进行筛选提取

xpath("参数")

参数语法:

  1. 第一个位置的单个/代表根节点,即祖宗,除了首位置的/,单个/都代表最近的子节点,即儿子;

  1. 两个/即//代表子子孙孙中;

  1. ./代表在当前位置基础上继续搜索;

  1. 如果某个父亲的儿子有很多,选某个儿子可以用中括号选取[第几个],从1开始;

  1. /text()表示当代位置包含的文本;

  1. //text()表示当代和子子孙孙代所包含的文本;

  1. /*任意一个儿子,*是通配符;

  1. 在一个标签后面紧跟一个中括号[],[]表示属性筛选,参数形式:@某个属性=值;

  1. 最后一个位置/后面紧跟一个@,@后面跟属性,可以拿到属性的值

三、如果网页是动态页面,有些数据被隐藏了,可以用selenium模块,但是只能爬取原始页面,可以多次使用进入子页面


持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听-起风了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值