栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

零基础Python抓取网页(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

零基础Python抓取网页(一)

目录

1. urllib模块

2. urllib.error.HTTPError: HTTP Error 403: Forbidden解决


1. urllib模块

Python中urllib模块专门用于读取web中的数据。只要拿到url,我们就能拿到所需要的对象,进而获取data。

from urllib import request

def getResponse(url):

    url_request=request.Request(url)
    print(url_request.get_method())

    url_response=request.urlopen(url)

    return url_response

http_response=getResponse("http://data.people.com.cn/publish/_s1/0819.html")
print(http_response.read().decode('utf-8'))

url_request = request.Request(url)用来做初始化。request首先用来请求一个url地址,拿到Request对象。

拿到的对象作为urlopen的参数,用来获取请求的对象。

print(http_response.read().decode('utf-8'))拿到网页内容,decode标明解码格式,避免中文解码乱码。

这种方法足够抓取一般网页的内容了。

2. urllib.error.HTTPError: HTTP Error 403: Forbidden解决

在遇到稍好一点的网站时用urllib.request.urlopen的方式请求,由于服务器端接收不到发送端的其他信息,会将请求化为非正常访问,进行拒绝。、

以edge为例,要查看设备向网站发送的的信息,先点击f12,再点击网络标签,刷新页面,在“标头”下方的“请求标头”查看header内容。 

将其添加到request中再进行请求即可模拟浏览器访问向服务器发送请求。

headers = {'Accept': 'text/html, application/xhtml+xml, image/jxr, */*',
               'Accept - Encoding':'gzip, deflate',
               'Accept-Language':'zh-Hans-CN, zh-Hans; q=0.5',
               'Connection':'Keep-Alive',
               'Host':'zhannei.baidu.com',
               'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063'}
r = requests.get('http://zhannei.baidu.com/cse/search', params=keyword, headers=headers, timeout=3)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980512.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号