什么是爬虫? 爬行的毛毛虫? 爬行的虫子? 记得有个女孩子曾和我说过,你不要说爬虫了,一听见我就全身起鸡皮疙瘩;
这……
爬虫嘛“网络扒手”,在互联网上的蜘蛛,利用http协议进行工作,名字很奇怪但是用的真香啊~~~
接下来对小爬虫的几种形式进行说明
在网页 中就有我们要的数据那么真的太太太幸福了! 只需要request一下那么就ok了 话不多说上例子
爬取百度页面的“百度一下”按钮中的文字
查看是否有requesta、bs4等第三方库 没有的话打开cmd
pip install requests pip install bs4 pip install lxml -i http://mirrors.aliyun.com/pypi/simple/ # 镜像地址 # 如果按转失败可以加上镜像地址或查看是不是pip未更新接下去就是打开百度页面进行“踩点”(F12万能的开发者工具) 让我们找一找百度一下吧! 点击小箭头然后选择我们要找的地方,见证奇迹的时刻…… 此时我们就可以开始我们的互联网之旅了【狗头】
我们已经获取到了html
先对网页进行解析
from bs4 import BeautifulSoup html = BeautifulSoup(r.text, 'lxml') # 这里的lxml没有下载有可能报错这样子得到的页面就是html格式的页面了
但是得到的本该是中文的地方却是乱码,无法读取,应该是少了什么!
查看源码发现是‘utf-8’的编码形式,那么就好办了
import requests from bs4 import BeautifulSoup r = requests.get('https://www.baidu.com/') r.encoding = "utf-8" html = BeautifulSoup(r.text, 'lxml') # 这里的lxml没有下载有可能报错部分截图内容,这样子问题基本上解决。
那么久剩下来获取资料了
1、使用bs4 2、使用re两个各自有自己的优缺让我们视情况 而定吧!
先上代码:
import requests from bs4 import BeautifulSoup url = 'https://www.baidu.com/' headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'} r = requests.get(url, headers=headers) r.encoding = "utf-8" # print(r.text) html = BeautifulSoup(r.text, 'lxml').body span = html.find_all('input', id='su')[0].attrs['value'] print(span) input 百度一下解析: 先在页面用F12进行定位获得有关的标签信息 利用方法选择器 find_all进行选择 html.find_all('input', id='su') 就获得了 [<input class=“bg s_btn” id=“su” type=“submit” value=“百度一下”/>] 接着我们采用节点选择器获取里面的信息 通过attrs获得所有的属性值并返回一个字典 如果有不清楚的可以点击参考文档 获得结果{'type': 'submit', 'id': 'su', 'value': '百度一下', 'class': ['bg', 's_btn']} 这个时候只需要通过‘key’“value”就可以获得结果
此处用正则表达式意义不大就不演示了把两个方案进行展示
pattern_2 = re.compile('<li>: (.+)</li></ul></div>') p2 = re.findall(pattern_2, str(div))[0]通过“<li>: (.+)</li></ul></div>”获取中间(.+)位置的内容
pattern_2 = '<li>: .*</li></ul></div>' p2 = re.findall(pattern_2, str(div))[0]获取以<li>开通以</ul></div>结尾的所有内容
具体情况就看大家自己的实际操作了。 正则表达式不会很头疼,学的也很头疼,但是用起来却很爽,欲罢不能~~~
这个时候就需要查看我们network又是一个让我们欲罢不能的好功能 点击F12选择network即可 打开network发现花花白白的怎么办??? 这个时候刷新页面,见证奇迹的时刻到了 数据都出来了,这就是传说中的抓包吧直呼过瘾 这个是就是找我们需要的数据的时候了 找到数据进行预览查看数据 确认查找正确以后我们再查看获得方式和url即可
import requests import json url = '' headers = {'user-agent': ''} r = requests.get(url, heardes=headers) r_json = json.loads(r.text) print(r_json)获取的json和字典一样直接通过“key”值即可获得和查看
通过key的获取来获得你想要的数据及资源。
有些网页写的很好你找不到想要的数据但是网页上也有那么就很脑壳痛了 有个小工具可以解决这一困扰
windows下在cmd命令行下使用pip3 install selenium安装,出现successful即为成功
进入http://chromedriver.chromium.org/downloads或者http://npm.taobao.org/mirrors/chromedriver/下载 以谷歌官方为例,首先查看浏览器版本信息! 谷歌点击左上角… 然后选择设置 查看版本号 在网站中找到对应的版本即可,下载后放到谷歌浏览器所在的目录下。
打开python编辑器
python from selenium import webdriver drivier=webdriver.Chrome()查看是否运行谷歌浏览器 运行即可
from selenium import webdriver from selenium.webdriver.chrome.options import Options path = '' chrome_path = 'C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe' os.environ['webdriver.chrome.driver'] = chrome_path # 设置系统环境变量 chrome_options = Options() chrome_options.add_argument('--headless') drive = webdriver.Chrome(chrome_path, chrome_options=chrome_options) # 打开谷歌浏览器 drive.get(path) # 打开一个网址 # print(drive.page_source) html = BeautifulSoup(drive.page_source, 'lxml') drive.quit() # 退出浏览器 print(html)这样子只要输入网址就可以获得渲染以后的网页代码而且不会出现被控制的浏览器效果好极了!
以上三种爬虫可以解决我们生活中大部分的内容很嗨皮的
今天的三岁就介绍到这里下次我们再继续记得一键三连哦!