爬虫学习(一)
爬虫介绍:
- 什么是爬虫
网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么爬虫就是在网上爬来爬去的蜘蛛,爬虫程序通过请求url地址,根据响应的内容进行解析采集数据。 - 作用
通过有效的爬虫手段批量采集数据,可以降低人工成本,提高有效数据量,给予运营/销售的数据支撑,加快产品发展。 - 就业情况
目前互联网产品竞争激烈,业界大部分都会使用爬虫技术对竞品产品的数据进行挖掘、采集、大数据分析,这是必备手段,并且很多公司都设立了爬虫工程师的岗位。那么爬虫工程师是干什么的呢?(可以点来看看) - 合法性
爬虫是利用程序进行批量爬取网页上的公开信息,也就是前端显示出的数据信息。因为信息是完全公开的,所以是合法的。 - 反爬虫
爬虫其实很难完全被制止,道高一尺魔高一丈,这是一场没有硝烟的战争,就像码农VS码农,
反爬虫一些手段:- 判断request的header信息:UA判断是不是浏览器访问,referer判断是不是从本身的页面访问的,比如:从百度访问一个信息,返回看是不是该网页返回的信息,如果是就允许访问,不是就可以不让你访问。
- 封ip:访问的次数过多了, 对方服务器看到的全是你的ip,就直接禁掉。
- 返回错误信息:当你多次访问同一个页面时,返回给你一个页面,是错误的信息
- 验证码:在访问别人网站时,让你输入验证码。
- 选择python的原因
python有足够多的开源库,很多东西不用写直接调用某某函数就可以了。 - 选择Python版本
有2和3两个版本, 3相对于来说是比较好的,但是往往在选择3.x的时候又到了困难的时候,所以我直接建议大家使用3.7,想必大家都是知道为什么不用最新的的原因。 - 爬虫基本套路
这是没有任何反爬的
from urllib.request import urlopen#导入
url=""#url
response=urlopen(url)# 发送请求
info=response.read()# 读取内容
print(info.decode())# 打印内容
没有ua访问不了的:
url=""
heads=("user-agent"," Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36")
opener=urllib.request.build_opener()
opener.addheaders=[heads]
urllib.request.install_opener(opener)
data=urllib.request.urlopen(url).read().decode("utf-8","ignore")
或者:
from urllib.request import urlopen,Request
url=""
user_agents="Mozilla/5.0(compatible;MSIE9.0;WindowsNT6.1;Trident/5.0"
headers={
"User-Agent": user_agents
}
request=Request(url, headers=headers)
response=urlopen(request)
info=response.read().decode()
cookie:
from urllib.request import Request, urlopen
from fake_useragent import UserAgent
url="http://www.sxt.cn/index/user.html"
headers={
"User-Agent": UserAgent().chrome,
"Cookie": ""#去浏览器中找到对应的cookie信息
}
request=Request(url, headers=headers)
response=urlopen(request)
print(response.read().decode())
或者登陆的方式:
from urllib.request import Request, urlopen
from fake_useragent import UserAgent
from urllib.parse import urlencode
from urllib.request import HTTPCookieProcessor,build_opener
loginurl=""#得到登陆的url
headers={
"User-Agent": UserAgent().chrome,
}
form_data={
#查看cookie返回的信息所对应的
}
f_data=urlencode(form_data).encode()
request=Request(loginurl, headers=headers, data=f_data)
handler=HTTPCookieProcessor()#这样子不会报错,URLopen会报错
opener=build_opener(handler)
response=opener.open(request)
info_url=""#登陆进入后的url
request = Request(info_url, headers=headers)
response=opener.open(request)
print(response.read().decode())
大致第一天就是这些吧。