Python网络爬虫第一篇
(一):为什么要学习网络爬虫?
大数据成为当今时代的热门话题之一,在数据量爆发增长的互联网时代,网站与用户沟通实质为数据的交换。如果大量的数据得以分析,我们能够对事件的看法,解决方案做出更好的决策。而网络爬虫技术,则是大数据分析领域的第一个环节。
(二):能从网络上爬取什么数据?
所有在网页能见到的数据都可以通爬虫程序保存下来。
(三):python爬虫的流程
获取网页——解析网页(提取数据)——存储数据
1:获取网页:给一个网址发送请求,该网址会返回整个网页的数据。
基础技术:requests模块、urllib模块、selenium模块
进阶技术:多进程多线程抓取、登录抓取、突破IP封禁、使用服务器抓取。
2:解析网页:从整个网页中提取想要的数据。
基础技术:re正则表达式、BeautifulSoup和lxml。
进阶技术:解决中文乱码
3:存储数据:把数据存储下来,可存放到数据库,也可存在csv中。
基础技术:存入txt文件和存入csv文件
进阶技术:存入MySQL数据库和MongoDB数据库
(四)编写第一个网络爬虫
1:使用pip安装第三方库:pip是Python安装第三方库(package)的工具,安装的第三方库:bs4:使用其中的BeautifulSoup解析网页。
2:使用编辑器Pycharm编程。(如有小伙伴遇到安装问题,请联系小编,小编在所不辞)
3:请开始你的表演:
第一步:获取页面:
import requests#导入第三方库 link="https://www.baidu.com/"#定义link为爬取目标网页地址 #定义请求头的浏览器代理,伪装成浏览器 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/87.0.4280.88 Safari/537.36 Edg/' '87.0.664.60'} r=requests.get(url=link,headers=headers)#请求网页 print(r.text)#获取网页内容代码
浏览器查看请求头的方法:在网页按下鼠标右键——检查——Network——按下Ctrl+R——点击与该网页地址相同的Name——Header——User-Agent(滑到底部即可看到)
请求头的作用:在请求网页爬取的时候,输出的text信息中会出现抱歉,无法访问等字眼,这就是禁止爬取,需要通过反爬机制去解决这个问题。headers是解决requests请求反爬的方法之一,相当于我们进去这个网页的服务器本身,假装自己本身在爬取数据。对反爬虫网页,可以设置一些headers信息,模拟成浏览器取访问网站 。
第二步:提取需要的数据
import requests#导入第三方库 from bs4 import BeautifulSoup#从bs4导入BeautifulSoup link="https://www.baidu.com/"#定义link为爬取目标网页地址 #定义请求头的浏览器代理,伪装成浏览器 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/87.0.4280.88 Safari/537.36 Edg/' '87.0.664.60'} r=requests.get(url=link,headers=headers)#请求网页 soup=BeautifulSoup(r.text,'html.parser')#使用BeautifulSoup解析 #找到你想要的内容,填写相应信息 title=soup.find('span',class_='title-content-title').text print(title)#获取网页内容代码
检查——单击小按钮——在页面点击你想要的数据——的到class
选中它,就会最终到如下图所示
第三步:保存数据
在原有代码下添加
#打开一个空白的txt,然后使用调用write函数写入刚刚的字符串 with open('text_test.txt','a+')as f: f.write(title)
运行之后得到
不过在编辑器里打开无法识别中文,所以到相应位置用记事本或写字板等其他软件打开即可查看数据。
数据就保存到了该文件里。
第一个简单的爬虫就编写好了。
完整代码如下:
import requests#导入第三方库 from bs4 import BeautifulSoup#从bs4导入BeautifulSoup link="https://www.baidu.com/"#定义link为爬取目标网页地址 #定义请求头的浏览器代理,伪装成浏览器 headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/87.0.4280.88 Safari/537.36 Edg/' '87.0.664.60'} r=requests.get(url=link,headers=headers)#请求网页 soup=BeautifulSoup(r.text,'html.parser')#使用BeautifulSoup解析 title=soup.find('span',class_='title-content-title').text print(title)#获取网页内容代码 #打开一个空白的txt,然后使用调用write函数写入刚刚的字符串 with open('text_test.txt','a+')as f: f.write(title)
关注我,获取更多干货!
神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试