初识爬虫
什么是爬虫?
爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来。想抓取什么?这个由你来控制它咯。
比如它在抓取一个网页,在这个网中他发现了一条道路,其实就是指向网页的超链接,那么它就可以爬到另一张网上来获取数据。这样,整个连在一起的大网对这之蜘蛛来说触手可及,分分钟爬下来不是事儿。
爬虫的基本流程
用户获取网络数据的方式:
方式1:浏览器提交请求--->下载网页代码--->解析成页面
方式2:模拟浏览器发送请求(获取网页代码)->提取有用的数据->存放于数据库或文件中
爬虫要做的就是方式2;
POST方式
import urllib.parse
import urllib.request
url="http://liuxin-blog.appspot.com/messageboard/add"
values={"content":"命令行发出网页请求测试"}
data=urllib.parse.urlencode(values)
#创建请求对象
req=urllib.request.Request(url,data)
#获得服务器返回的数据
response=urllib.request.urlopen(req)
#处理数据
page=response.read()
GET方式
import urllib.parse
import urllib.request
url="http://www.google.cn/webhp"
values={"rls":"ig"}
data=urllib.parse.urlencode(values)
theurl=url+"?"+data
#创建请求对象
req=urllib.request.Request(theurl)
#获得服务器返回的数据
response=urllib.request.urlopen(req)
#处理数据
page=response.read()
常用参数
- method: 向url发送http请求的方法
- requests.get requests.post get 和 post的本质就是method
- url: 访问的url
- params: get请求时传递的参数,post的时候也可以使用
- data: post请求时传递的请求体
- 浏览器显示的form data
- data=json.dumps() == json
- json: 请求时发送的json数据(json.dumps)
- 浏览器显示的 request payload
- headers: 请求头
- cookies: 请求时使用的cookies
- proxies: 代理
自动登陆GitHub
import requests
from bs4 import BeautifulSoup
r1 = requests.get(
url="https://github.com/login",
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
},
)
r1_cookie_dict = r1.cookies.get_dict()
s1 = BeautifulSoup(r1.text,'html.parser')
token = s1.find(name='input',attrs={'name':'authenticity_token'}).get('value')
#print(token)
r2 = requests.post(
url='https://github.com/session',
data={
'commit': 'Sign in',
'utf8': '✓',
'authenticity_token': token,
'login': '944194985@qq.com',
'password': '*****',
},
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36'
},
cookies=r1_cookie_dict
)
print(r2.text)