python爬虫基本框架代码(入门)

首先下载并导入基本的库函数

import re
import time
import os.path
import requests
import urllib3

获取请求头(模拟浏览器访问网页)
获取方式:在网页空白处右击,选择“检查”,点击浏览器页面左上角刷新按钮,然后点击“网络”,随便点击一个元素,在右下角位置即出现User-Agent即位请求头,复制即可。如下图所示:
python爬虫基本框架代码(入门)_第1张图片
以美食图片网站https://www.foodiesfeed.com/为例(将请求头复制在下面句子中)。

headers = {'user-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
                         '(KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.55'}
url = 'https://www.foodiesfeed.com/'  # 网页地址(点击网站首页白色花图片)
session = requests.session()  # 保持会话
urllib3.disable_warnings()  # 隐藏一些警告信息

# 获取网页内容,防止请求失败程序中断 ,加入异常机制
while True:
    try:
        res = session.get(url=url, headers=headers, verify=False)  # 获取网页源码
        break
    except:
        print("连接失败...")
        print("睡眠5秒...")
        print("ZZzzzz...")
        time.sleep(5)
        print("继续连接...")
        continue

res.encoding = "utf-8"
html = res.text  # 解析网页源码
print(html)

# 正则表达式匹配下载链接
urls = re.findall('img width=".*?" height=".*?" src="(.*?)" class=".*?" '
                  'alt=".*?" decoding=".*?" loading=".*?" title=".*?"', html)
print(urls)

其中re表达式中,".?“表示忽略冒号内的内容,”(.?)"表示匹配当前冒号内的内容。

# 保存图片
dir_name = 'foot picture'  # 文件夹名称
if not os.path.exists(dir_name):
    os.mkdir(dir_name)

for i in urls:
    time.sleep(2)  # 睡眠2秒钟,防止请求太快导致网页崩溃
    figure_name = re.findall(f'img width=".*?" height=".*?" src="{i}" class=".*?" '
                             'alt="(.*?)" decoding=".*?" loading=".*?" title=".*?"', html)[0]
    print(figure_name)  # 文件名称
    if figure_name == '':  #匹配不到文件名则跳过,或者自定义文件名
        continue
    while True:
        try:
            response = requests.get(i, headers=headers)  #获取当前图片内容
            break
        except:
            print("连接失败...")
            print("睡眠5秒...")
            print("ZZzz...")
            time.sleep(5)
            print("继续连接...")
            continue

    with open(dir_name + '/' + figure_name+'.jpg', 'wb') as f:  # 以写入的方式打开文件
        f.write(response.content)  # 写入文件内容
        print("下载成功!")

其中最关键的是正则表达式匹配,鼠标右击,点查看网页源代码,找到图片链接所在位置,复制每个图片链接前后都相同的内容,如上面例子中的"img width=、height=、src=、class=、 'alt=“(.*?)” decoding=、 loading=、title=" 在每个图片链接周围都有,那么用正则表达式匹配图片链接,即src=(.*?)。

爬取其他类型数据,如果文本、视频等与此类似。

你可能感兴趣的:(python学习,python,爬虫,开发语言)