零基础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)

猜你喜欢

转载自blog.csdn.net/WZT725/article/details/125319905