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
查看评论