【笔记】0基础python学爬虫(未完)

(一)用requests发送get请求

安装好pycharm(跳过)

在本地控制台输入pip install requests 安装requests模块

with防止资源浪费 不论f文件有没有执行成功最后都会关闭

请求获取url

resp = requests.get(url)

resp.text获取源代码

as f:表示将打开的文件对象赋值给变量 f。通过 f,你可以操作这个文件,比如读写文件内容

(二)发送post请求

你编出来的数据名称 = {“kw":要爬虫的关键字}

kw表示查询的关键词(keyword)

通过 数据={“kw”:}可以访问字典中键 kw 对应的值(即用户输入的单词)

input() 是一个内置的 Python 函数,用来获取用户输入。

在执行时,input("请输入你想查询的单词") 会在控制台向用户显示提示语句 **"请输入你想查询的单词"**,然后等待用户在控制台输入文本。

用户输入的文本会作为字符串返回,并存储在字典 数据 的 kw 键中。

requests.post(url,data = 你编出来的数据名称)

(三)正则表达式

.*取对应的头和尾的最远距离范围

.*?取对应头和尾的最近距离

图中红色阴影部分为 对应头和尾

(四)re模块

匹配的正则表达式加载器 re.compile(r'  ') /r(“  ”)也可以

(五)正则+re的实战

.*?匹配到代码中正则表达式的头和尾(最近) 命名则提取 不命名则过滤

输出时用上面两个哪个都可以

(六)xpath = xml html

xpath导入方式:

加载器:

重点:

导入语句 from lxml import etree

f对象写入html源代码 

etree.HTML()再将加载好的html代码解析成一个dom树

语法:

自己抓了个网址代码写入xpath_test.html 活学活用

text()是提取标签中间的文本

* 是任意符

@ 可以提取标签中的属性的文本

// 是随机位置

标签[属性='属性名'] 可以提取固定条件的文本

写循环输出时

把要输出内容的共同部分写成et.xpath(”“)第一部分

共同部分之下要提取的分类进行提取 如何输出

./ 表示共同部分的路径

(七)re+xpath实战

7.1xpath爬取该页面上各个子页面的href


url = "https://desk.zol.com.cn/dongwu/"
head ={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 Edg/127.0.0.0"
}
domain = "https://desk.zol.com.cn"
resp = requests.get(url,headers=head)
resp.encoding = "gbk"
et = etree.HTML(resp.text)
result = et.xpath("//ul[@class='pic-list2 clearfix']/li[@class='photo-list-padding']/a[@class='pic']/@href")
for item in result:
url = domain + item  
print(url)

拼接可得到完整的访问链接url

7.2re爬取子某个页面上的图片的src 

根据网页规则来 自己查看页面代码


# 获取详细页面的src(处理好分辨率版本)
url = "https://desk.zol.com.cn/bizhi/9694_117200_2.html"
head = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
"Referer": "https://desk.zol.com.cn/dongwu/",
"Cookie": "ip_ck=7sKA7vv/j7QuOTUxOTE4LjE3MjI0NDI1NzY%3D; questionnaire_close_today=1724371201; questionnaire_close_total=1; lv=1724709196; vn=7; Adshow=4; questionnaire_pv=1724630413; cto_bundle=bSGTdl8lMkJtMEE5TVU3OWF5VUg3N0RWa2dNcXRodHZLblQ0b0hJN1hZSGZVcVBKMENkRHQyWVUwcVNGN3hvNlpmS09iMTA1djdnRnJIeVc5NHNnSXAxb0lVR0FTam96RjlXbmZYdDExYzl2Z1Z4clNPdUNpYjBtTk4yYVhCRURxeHklMkZGRTF6ZllSMCUyRk5uOFVyZ2JhRzZSQUR4SlElM0QlM0Q"
}

resp = requests.get(url,headers=head)
obj = re.compile(r"var deskPicArr.*?=(?P<deskPicArr>.*?);", re.S)
result = obj.search(resp.text)
deskPicStr = result.group("deskPicArr")
deskPic = json.loads(deskPicStr)
for item in deskPic['list']:
oriSize = item.get("oriSize") # 取oriSize尺寸
imgsrc = item.get("imgsrc") # 获取图片下载路径
imgsrc = imgsrc.replace("##SIZE##", oriSize) # 取oriSize放进##SIZE##里
print(f"下载链接:", imgsrc)

遇到网页防爬403 未解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值