小言_互联网的博客

Python爬虫基本框架

222人阅读  评论(0)

☞☞☞点击查看更多优秀Python博客☜☜☜

   Hello大家好,我是你们的朋友JamesBin这篇文章我们一起学习一下学习Python到爬虫的一个基本框架。

爬虫的基本思路:

#1、发起请求 使用http库向目标站点发起请求,即发送一个Request Request包含:请求头、请求体等

#2、获取响应内容 如果服务器能正常响应,则会得到一个Response Response包含:html,json,图片,视频等

#3、解析内容 解析html数据:正则表达式,第三方解析库如Beautifulsoup,pyquery等 解析json数据:json模块 解析二进制数据:以b的方式写入文件

#4、保存数据 数据库文

代码实现

# -*- coding: UTF-8 -*-
# -Author-= JamesBen
# Email: 1597757775@qq.com 

import  requests

def get_HTMLText(url):
    try :
        headers = \
            {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
            }  # 此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦截

        r = requests.get(url, timeout = 30,headers = headers)
        r.raise_for_status()      #如果状态不是200引发HTTPError异常
        r.encoding = r.apparent_encoding  #将文本的编辑方式传给头,防止造成编码错路出现乱码
        return r.text
    except :
        return "产生异常"
if __name__ == "__main__":
    url = "https://www.amazon.cn/"
    print(get_HTMLText(url))

代码分析

import requests导入requests库

def get_HTMLText(url):
    try :
        headers = \
            {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36 QIHU 360SE'
            }  # 此行代码骗过服务器我们是使用浏览器进行访问的,防止有些网站对我们进行拦截

        r = requests.get(url, timeout = 30,headers = headers)
        r.raise_for_status()      #如果状态不是200引发HTTPError异常
        r.encoding = r.apparent_encoding  #将文本的编辑方式传给头,防止造成编码错路出现乱码
        return r.text
    except :
        return "产生异常"

&emps;&emps;在这段代码中主要功能是得到网页源码,首先使用了try except进行异常捕获。在try部分首先加入个请求头headers用于骗过浏览器,其中使用requests里面的get函数得到网页源码,然后将源码用.text进行输出。
&emps;&emps;r.encoding = r.apparent_encoding #将文本的编辑方式传给头,防止造成编码错路出现乱码这行代码主要是防止编译出错。
&emps;&emps;这行代码的巧妙之处是首先模拟浏览器访问,然后加入了请求头,还进行了编码方式的改进。最重要的是进行了异常捕获。

以上就是主要的代码片段及分析,大家可以借鉴一下,如果感觉此文章对你有所帮助,请留下你一个宝贵的赞呗!


转载:https://blog.csdn.net/qq_45172832/article/details/104600556
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场