这边有一个用来测试的网站点击跳转
简单的网页爬虫
requests的使用
requests
是Pytho
n的一个第三方HTTP
(Hypertext Transfer Protocol
,超文本传输协议)库,它比Python
自带的网络库urllib
更加简单、方便和人性化。使用requests
可以让Python
实现访问网页并获取源代码的功能。
使用requests获取网页的源代码,最简单的情况下只需要两行代码:
#使用requests获取源代码
import requests
source = requests.get('https://www.baidu.com').content.deocde()
使用requests获取网页的源代码
使用浏览器来访问网页,看起来只需要输入网址就可以。但其实网页有很多种打开方式,最常见的是GET
方式和POST
方式。
在浏览器里面可以直接通过输入网址访问的页面,就是使用了GET
方式。
还有一些页面,只能通过从另一个页面单击某个链接或者某个按钮以后跳过来,不能直接通过在浏览器输入网址访问,这种网页就是使用了POST
方式。
GET方式
-
对于使用
GET
方式的网页,再Python
中可以使用requests
的get
方法获取网页的原码url = 'https://www.baidu.com' html = requests.get(url) html_text = html.text() html_bytes = html.content html_str = html_bytes.decode()
-
html是全部的网页数据
-
content是将数据转换成二进制数据,一般用于读取图片数据
-
text是将数据转换成网页自己编码的字符串,一般用于读取文字数据
-
decode将数据从二进制转换成字符串
POST方式
-
网页的访问方式除了
GET
方式以外,还有POST
方式。有一些网页,使用GET
和POST
方式访问同样的网址,得到的结果是不一样的。还有另外一些网页,只能使用POST
方式访问,如果使用GET
方式访问,网站会直接返回错误信息。import requests url = 'http://exercise.kingname.info/exercise_requests_post' data = { 'name': 'value1', 'password': 'value2' } html = requests.post(url, data=data).content.decode()
-
其中,
data
这个字典的内容和项数需要根据实际情况修改,Key
和Value
在不同的网站是不一样的。而做爬虫,构造这个字典是任务之一。 -
还有一些网址,提交的内容需要是
JSON
格式的,因此post()
方法的参数需要进行一些修改:import requests url = 'http://exercise.kingname.info/exercise_requests_post' data = { 'name': 'value1', 'password': 'value2' } json = { 'name': 'value1', 'password': 'value2' } html_data = requests.post(url, data=data).content.decode() html_json = requests.post(url, json=data).content.decode()
requests与正则结合
在上面使用requests
我们可以拿到下面的数据
那我们该如何拿到标题和正文?
import requests
import re
url = 'http://exercise.kingname.info/exercise_requests_get.html'
page = requests.get(url).content.decode()
title = re.search('title>(.*