python爬虫|python爬虫快速入门(零基础也看得懂)

网络爬虫分类

  • 通用网络爬虫(搜索引擎使用,遵守robopts协议)
    robots协议:网站通过robots协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取,通用网络爬虫需要遵守robots协议(君子协议)
    查看网站的robots协议: https://www.baidu.com/robots.txt
  • 聚焦网络爬虫:自己写的爬虫程序
爬取数据步骤
  • 确定需要爬取的URL地址
  • 由请求模块向URL地址发出请求,并得到网站的响应
  • 利用解析模块从响应内容中提取所需数据
    所需数据,保存
    页面中有其他需要继续跟进的URL地址,则继续第2步去发请求,如此循环
爬虫入门: 1.请求模块
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

注意:
res.geturl() 返回实际地址解释:有些网页可能会进行重定向,从而返回另一个地址
代码举例:
from urllib import request #获得相应对象 res=request.urlopen(url='http://www.baidu.com/') #获取网页源代码(默认是字节串,需要转为字符串) html=res.read().decode() #获取实际地址 url=res.geturl() #返回http响应码 code=res.getcode()print(res) print('='*30) print(html) print('='*30) print(url) print('='*30) print(code)

结果:
============================== ...... ============================== http://www.baidu.com/ ============================== 200

问题: python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

我们用于通过相关访问的数据:
User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Mobile Safari/537.36
通过python爬虫访问的数据如下:
headers下面内容
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

如何改进? python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

代码举例:
from urllib import request # 1.定义常用变量 url='http://httpbin.org/get' headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} # 2.包装请求 req=request.Request(url=url,headers=headers) # 3.发请求 res=request.urlopen(req) # 4.获取响应内容 html=res.read().decode() print(html)

结果:
{"args": { }, "headers": {"Accept-Encoding": "identity", "Host": "httpbin.org", "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1", "X-Amzn-Trace-Id": "Root=1-6117d0cb-6a429a376d4882805141367c" }, "origin": "222.137.196.191", "url": "http://httpbin.org/get" }

总结:
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

urllib.parse编码
  • 作用:给URL地址中查询参数进行编码
  • 导入方式
    import urllib.parse
    from urllib import parse
  • 示例(url不能直接识别中文,需要编码进行转换)
    –编码前:https://www.baidu.com/s?wd=美女
    –编码后:https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
    python爬虫|python爬虫快速入门(零基础也看得懂)
    文章图片

    拼接url的三种方式
    python爬虫|python爬虫快速入门(零基础也看得懂)
    文章图片

    小练习:
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

代码演示:
from urllib import request from urllib import parse # 1.拼接url地址 word = input('请输入百度搜索关键字:') params=parse.urlencode({ 'wd':word}) url='http://www.baidu.com/s?{}'.format(params)#这个url我们需要提前观察它的结构 headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} # 2.发请求获取响应内容 req=request.Request(url=url,headers=headers) res=request.urlopen(req) html=res.read().decode() print(html) # 3.保存到本地文件 filename=word+'.html' with open(filename,'w',encoding='utf-8') as f: f.write(html)

总结:
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

入门实战案例: python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

静态爬取一般步骤:
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

代码如下:
class BaiduTiebaSpider: def __init__(self): self.ur1 = 'http://tieba.baidu.com/f?kw={}&pn={}' self.headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'} def get_html(self,url): req=request.Request(url=url,headers=self.headers) res=request.urlopen(req) html=res.read().decode()return html def parse_html(self): """解析提取数据的函数"""passdef save_html(self,filename,html): with open(filename,'w',encoding='utf8') as f: f.write(html) def run(self): name=input('请输入贴吧名:') start=int(input('请输入起始页:')) end=int(input('请输入终止页:')) params=parse.quote(name) # 1.拼接url地址 for page in range(start,end+1): pn=(page-1)*50#根据所选贴吧url规律计算得出 url=self.ur1.format(params,pn) html=self.get_html(url) filename='{}_第{}页.html'.format(name,page) self.save_html(filename,html) #终端打印提示 print('第%d页抓取成功' % page) # 控制数据抓取的频率 time.sleep(random.randint(1,3)) test=BaiduTiebaSpider() test.run()

结果:
请输入贴吧名:赵丽颖 请输入起始页:1 请输入终止页:3 第1页抓取成功 第2页抓取成功 第3页抓取成功

总结:
python爬虫|python爬虫快速入门(零基础也看得懂)
文章图片

温馨提示: 【python爬虫|python爬虫快速入门(零基础也看得懂)】相关操作一定要在法律允许的范围内进行!

    推荐阅读