正则爬取糗事百科热图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则爬取糗事百科热图相关的知识,希望对你有一定的参考价值。


正则爬取糗事百科热图:

第一步:找到网址

正则爬取糗事百科热图_html

我们分析Header,是Get请求

下面开始撸代码:

import  requests
import json,time
import re,os

上面先导入库

没有的pip intstall 安装库,可以通过​​国内镜像源安装​​

主题函数:

def get_url(page):
url="https://www.qiushibaike.com/imgrank/page //".format(page)
# url="https://www.qiushibaike.com/imgrank/"
headers=
User - Agent: Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(Khtml, likeGecko) Chrome / 89.0.4389.82Safari / 537.36

response=requests.get(url,headers=headers).text

获取整个页面的html

下面我们要用正则:

我们可以先cop 网页的elements

到本地,用正则测试,例如

import re
html=<div class="content"><span>妈妈带狗子出门,忘记带雨衣了——FB:J L</span></div>
res=<div class="content".*?<span>(.*?)</span>.*?</div>
resp=re.findall(res,html,re.S)
print(resp)

我们可以在本地进行测试:

下面是正则:

res=<div class="thumb".*?<img src="(.*?) alt.*?</div>
resp = <div class="content".*?<span>(.*?)</span>.*?</div>
picture=re.findall(res,response,re.S)
title=re.findall(resp,response,re.S)
# print(title)
# print(picture)打印测试
for img,title in zip(picture,title):
img_url="https:"+img
title_name=title.strip()
# print(title)
# print(img_url,title)
time.sleep(1)
response=requests.get(url=img_url,headers=headers)
with open(path+./%s.jpg%title_name,ab) as f:
f.write(response.content)
print(title+"图片下载成功!")

完整代码:

import  requests
import json,time
import re,os

def get_url(page):
path="./糗事百科"
url="https://www.qiushibaike.com/imgrank/page //".format(page)
# url="https://www.qiushibaike.com/imgrank/"
headers=
User - Agent: Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 89.0.4389.82Safari / 537.36

response=requests.get(url,headers=headers).text
res=<div class="thumb".*?<img src="(.*?) alt.*?</div>
resp = <div class="content".*?<span>(.*?)</span>.*?</div>
picture=re.findall(res,response,re.S)
title=re.findall(resp,response,re.S)
# print(title)
# print(picture)
if not os.path.exists(path):
os.mkdir(path)
for img,title in zip(picture,title):
img_url="https:"+img
title_name=title.strip()
# print(title)
# print(img_url,title)
time.sleep(1)
response=requests.get(url=img_url,headers=headers)
with open(path+./%s.jpg%title_name,ab) as f:
f.write(response.content)
print(title+"图片下载成功!")
if __name__ == __main__:
for i in range(1,13):
time.sleep(2)
get_url(i)

我们上面可以用for循环实现翻页操做.

糗事百科正则爬取就完成了

效果图片:

正则爬取糗事百科热图_html_02


以上是关于正则爬取糗事百科热图的主要内容,如果未能解决你的问题,请参考以下文章

爬取糗事百科的热门段子,以及热图链接

Python运用正则解析爬取糗事百科图片

python+正则+多进程爬取糗事百科图片

Python爬虫:爬取糗事百科

芝麻HTTP:Python爬虫实战之爬取糗事百科段子

Python爬虫爬取糗事百科(xpath+re)