Python编程语言的requests库和BeautifulSoup模块的组合,构成了最基本的爬虫结构,利用这两个部分足以爬取很多不是特别复杂网站的数据,因此,在自学爬虫的时候很多人选择从这两个库入手。
同样作为一名自学者的我,就先写写requests库的相关知识。
requests库在写爬虫的时候,用“import requests”python语句来直接调用
1.最基本的操作用get()方法
response = requests.get("网址")
print(response.text)#返回的是unicode格式的数据
print(response.content)#返回的是字节流数据
注意:字节流是由字节组成的, 字节流是最基本的,所有的InputStrem和OutputStream的子类都是,主要用在处理二进制数据,它是按字节来处理的 。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
2、get()方法里面的headers参数
许多网站不喜欢陌生人来爬取其中的数据,就会给自己的网站放一个头文件,通常叫请求头文件,我们需要在写爬虫的时候,在get()方法里面填上这个请求头文件,这个请求头文件一般藏在需要爬取的网站的源代码里面。
查找headers头文件步骤如下:(以“优信二手车官网为例”)
(1).输入网址,打开网站,然后点击键盘上面的F12键,或者用鼠标点击右键打开“审查元素”
(2).点击出现的工具栏上面的“Network”,然后点击键盘上面的F5,或者浏览器的刷新按钮来刷新网页。
(3).待网页刷新完毕,点击“Name”下面的第一行数据,在右边栏点击“Headers”
(3).出现的Request Headers里面的内容就是网站的请求头文件,将请求头文件复制到一个字典里面
例如:优信二手车头文件为header = {
}
最终的get()方法用法如下:response= requests.get(url = 网址,headers = header)
要想从网站里面爬出真正想要的内容,还需要配合Beautiful Soup库来进行。后面再写
import requests
from bs4 import BeautifulSoup
url12 = 'https://www.guazi.com/xa/'#瓜子二手车官网
# 设置访问网站的请求头部信息
header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36', 'Accept-Language':'zh-CN,zh;q=0.8', 'Cache-Control':'max-age=0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Host':'www.guazi.com', 'Upgrade-Insecure-Requests':'1', 'Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', 'Accept-Encoding': 'gzip, deflate, sdch, br', 'Connection': 'keep-alive', 'Referer': 'https://www.guazi.com/xa/buy/o1/', 'Host': 'www.guazi.com', 'Cookie': 'uuid=ee21b228-ee48-48d9-ef9d-293029c37540; ganji_uuid=8917084347138764524136; cityDomain=xa; antipas=4Z100701019837606183975307924; clueSourceCode=%2A%2300; cainfo=%7B%22ca_s%22%3A%22pz_360%22%2C%22ca_n%22%3A%22pz_bt%22%2C%22ca_i%22%3A%22-%22%2C%22ca_medium%22%3A%22-%22%2C%22ca_term%22%3A%22-%22%2C%22ca_content%22%3A%22-%22%2C%22ca_campaign%22%3A%22-%22%2C%22ca_kw%22%3A%22-%22%2C%22keyword%22%3A%22-%22%2C%22ca_keywordid%22%3A%22-%22%2C%22scode%22%3A%2210103001912%22%2C%22ca_transid%22%3Anull%2C%22platform%22%3A%221%22%2C%22version%22%3A1%2C%22client_ab%22%3A%22-%22%2C%22guid%22%3A%22ee21b228-ee48-48d9-ef9d-293029c37540%22%2C%22sessionid%22%3A%22-%22%7D; preTime=%7B%22last%22%3A1527558544%2C%22this%22%3A1527498767%2C%22pre%22%3A1527498767%7D; lg=1; sessionid=0cfd911d-958b-4e4f-ff15-a9383d8fb216' } r = requests.get ( url=url12, headers=headers ) html1 = r.content