总结
- 1.网络爬虫就是从网络上进行数据采集
- 2.经常使用的工具备urllib,beautifulsoup4
- 3.一些网站有反爬措施,须要加上headers后进行访问
- 4.beautifulsoup4能够将爬取到的信息转换为便于解析的对象
什么是网络爬虫
- 假设互联网是张蜘蛛网,咱们须要了解这张网上有多少只蝴蝶(我的感受fly更贴切,但太恶心了...).那么,咱们的小蜘蛛就须要在这张网上进行巡逻,遇到蝴蝶,就收集起来,这种从网络上采集数据的行为就能够理解为网络爬虫.
网络爬虫的知识储备
- 为了捉到小蝴蝶,小蜘蛛在新手村里学习了Python,HTML,CSS,JavaScript以及简单的网络知识,村里的铁匠告诉小蜘蛛,在村子外围有小蝴蝶出没,因而,小蜘蛛出发了.
简单的网络爬虫
- 离开了新手村的小蜘蛛很快就发现了小蝴蝶的踪影 butterfly_url
butterfly_url = 'https://www.cnblogs.com/willow-blueness/p/11704560.html'
- 小蜘蛛火烧眉毛的取出了本身的精灵球 urlopen,嗷呜的一声就向小蝴蝶丢了过去
from urllib.request import urlopen
butterfly_catch = urlopen(butterfly_url)
print(butterfly_catch.read())
- 小蝴蝶也很聪明呀,看到小蜘蛛想不通过浏览器大大就非法捕获它,那哪能赞成啊,抛出了"urllib.error.HTTPError: HTTP Error 403: Forbidden"的异常,就灵巧的躲开了.
- 因而,机灵的小蜘蛛就伪造了一份浏览器大大的手令:
catch_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"}
from urllib.request import urlopen,Request
butterfly_url = 'https://www.cnblogs.com/willow-blueness/p/11704560.html'
catch_headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36"}
butterfly_request = Request(butterfly_url,headers=catch_headers)
print(urlopen(butterfly_request).read())
- 天真的小蝴蝶被捉住了...
- 本觉得这个尴尬的故事到这里就结束了,但是小蜘蛛恰恰想知道小蝴蝶口袋里有几颗糖.因而,小蜘蛛就从铁匠那边学习了新的技能(引入新的python包):
pip install beautifulsoup4
- 掌握了新技能的小蜘蛛利用beautifulsoup开始探索小蝴蝶到底有几颗糖:
from bs4 import BeautifulSoup
butterfly_html = urlopen(butterfly_request).read()
butterfly_obj = BeautifulSoup(butterfly_html,features="html.parser")
- 到这里,小蝴蝶被小蜘蛛了解了个完全,小蜘蛛想知道啥,就直接查询butterfly_obj这个对象了,小蝴蝶哭晕在角落 Orz~~~