正好,刚开始接触python的时候,参加了一个算是免费(其实是需要付费9.9)的培训课程,刚好是七天课程,爬虫入门!
个人建议:python入门不建议报培训课!!!
请须知!
因为这些你自学就行,网上可以找到很多内容,你不花钱就能学会,你学不会(学废),花钱也没用!
不是广告推销课程,仅仅是记录流水文,非利益相关,如果侵权可联系我删除!!
说是七天,实际上是六天!
新人学,六天,比较难吧,尤其是零基础可能会学废吧!当然不排除有学习大佬,也是可能不用七天吧!
当然你可以学完基础语法再来看这篇,七天应该比较OK!
有疑问可以联系我,虽然我就是个渣渣!
【学习记录】极客大学,7天入门Python爬虫实战营
该篇非广告文
但可能是流水文
一点点记录仅供参考
7 天入门 Python 爬虫实战
Python 训练营·小课
尹会生 金山西山居运维总监
常见网络库精讲
HTTP、HTML 基础介绍
爬虫项目实战
班主任带班学习
怎么说呢,现今的推培训课程,都是采用微信群,打卡的形式来展开
以免费的形式(课程已订购)或者部分免费(限时9.9)的形式来获取学习群
总而言之免费是最贵的,想要快速,省事,省时省力,都是妄想!!
以下是流水账:
总共是7天,实际上是6天,最后一天是总结(结课),填表,搜集精准数据
第一天:
Day 1 视频观看:
1)网页数据的采集与urllib库
2)网页常见的两种请求方式get和post
3)3HTTP头部信息的模拟
Day 1 作业:
比较 urllib 和 requests 库的用法差异,通过 random() 方法实现每次提交请求时增加随机的 user-agent HTTP 头部信息。
参考资料:
urllib:
random():
附参考代码:
import random #引入 random 库
import urllib.request #引入 urllib.request 库
import requests
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
url="https://time.geekbang.org/" # 目标网址
#借助build_opener和addheaders完成
head=('User-Agent',random.choice(ua_list)) #注意:在urllib 中headers是元组
opener=urllib.request.build_opener()
opener.addheaders=[head]
response=opener.open(url)
print(response.read().decode('utf-8'))
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
"""random.choice(seq)
从非空序列 seq 返回一个随机元素。如果 seq 为空,则引发 IndexError。"""
req=requests.get(url,headers=headers)
print(req)
第二天:
Day 2 视频观看:
4)requests库的基本使用
5)结合正则表达式爬取图片链接
Day 2 作业:
使用 requests 库配合正则表达式,获取豆瓣读书 http://book.douban.com/top250 排名最高的25本书的名字。
参考资料:
re:
requests:
附参考代码:
import requests #引入requests库
import re #引入正则re库
import random #引入random库
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
url="https://book.douban.com/top250"
response=requests.get(url,headers=headers).content.decode('utf-8')
bookeze=r'
books=re.findall(bookeze,response,re.S)
print(books)
for book in books:
print(book)
第三天:
Day 3 视频观看:
6)Beautiful Soup的安装和使用
Day 3 作业:
1. 使用 Beautiful Soup 筛选器代替正则表达式进行图书名字筛选。
2. 通过搜索引擎了解 Xpath 的功能并比较和 Beautiful Soup 的差异。
参考资料:
Beautiful Soup:
XPath:
附参考代码:
import requests #引入 requests 库
from bs4 import BeautifulSoup #引入 BeautifulSoup 库
import random #引入random库
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
url="https://book.douban.com/top250"
response=requests.get(url,headers=headers).content.decode('utf-8')
soup=BeautifulSoup(response,'html.parser') #bs4解析网页
divs=soup.find('div',class_="article").find_all('div',class_="pl2")
for div in divs:
title=div.find('a').get_text()
title=title.replace('\n','').replace(' ', '') #去除格式,换行,空格
print(title)
第四天:
Day 4 视频观看:
7)使用爬虫爬取新闻网站
Day 4 作业:
使用 requests 和 XPath 获取豆瓣 top250 图书名字和作者,保存至本地文件。
参考资料:
Python I/O:
附参考代码:
import requests #引入 requests 库
from lxml import etree #引入etree库
import random #引入random库
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
url="https://book.douban.com/top250"
response=requests.get(url,headers=headers).content.decode('utf-8')
req=etree.HTML(response) #etree解析网页
titles=req.xpath('//tr[@class="item"]/td[2]/div[1]/a/@title') #获取 a 节点 title 属性 文本内容
for title in titles:
print(title)
with open("book.txt",'a+',encoding='utf-8') as f: # 以 utf-8 编码 追加 a+ 的形式 写入 book.txt 中
f.write('%s%s'%(title,'\n'))
第五天:
Day 5 视频观看:
8)使用爬虫爬取图片链接并下载图片
Day 5 作业:
学习异常处理对网络超时、文件不存在等异常进行捕获并处理。
参考资料:
错误和异常:
附参考代码:
import requests #引入 requests 库
from bs4 import BeautifulSoup #引入 BeautifulSoup 库
import random #引入 random 库
from requests.adapters import HTTPAdapter #引入 HTTPAdapter 库
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
url="https://book.douban.com/top250"
"""
python requests 配置超时及重试次数
max_retries 为最大重试次数,重试3次,加上最初的一次请求,一共是4次
"""
s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))
try:
response=s.get(url,headers=headers,timeout=5).content.decode('utf-8')
except requests.exceptions.RequestException as e:
print(e)
soup=BeautifulSoup(response,'html.parser') #bs4解析网页
divs=soup.find('div',class_="article").find_all('div',class_="pl2")
for div in divs:
title=div.find('a').get_text()
title=title.replace('\n','').replace(' ', '') #去除格式,换行,空格
print(title)
第六天:
Day 6 作业:
通过豆瓣 Top250 的
参考资料:
HTML 超链接:
附参考代码:
import requests #引入 requests 库
from bs4 import BeautifulSoup #引入 BeautifulSoup 库
import random #引入random库
#ua列表
ua_list=[
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36',
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.87 Safari/537.36 OPR/37.0.2178.31',
'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0',
]
headers={'User-Agent':random.choice(ua_list)} #随机生成协议头
url="https://book.douban.com/top250"
response=requests.get(url,headers=headers).content.decode('utf-8')
soup=BeautifulSoup(response,'html.parser') #bs4解析网页
divs=soup.find('div',class_="article").find_all('div',class_="pl2")
i=1
for div in divs[:10]: # 切片 获取前十本节点内容
href=div.find('a')['href']
print(href)
book_response = requests.get(href, headers=headers).content.decode('utf-8') #访问书籍详情页
book_soup = BeautifulSoup(book_response, 'html.parser') # bs4解析网页
h1=book_soup.find('div',id="wrapper").find('h1').get_text() #获取标题
h1=h1.replace('\n','')
h1='Top%d:%s'%(i,h1)
print(h1)
comment_infos=''
lis=book_soup.find('div',id="comments").find('ul').find_all('li')
for li in lis:
author=li.find('span',class_="comment-info").find('a').get_text()
conment=li.find('p',class_="comment-content").get_text()
comment_info='%s%s%s%s%s%s'%('author:','\n',author,'\n','conment:',conment)
print(comment_info)
comment_infos='%s%s%s'%(comment_infos,'\n',comment_info)
print(comment_infos)
with open('top10_book.txt','a+',encoding='utf-8') as f:
f.write('%s%s%s%s'%(h1,'\n',comment_infos,'\n'))
i=i+1
第七天:总结,结课
故没有作业和代码!
个人总结:
1.不太适合零基础学习,起码需要点python语法基础
当然除非你有极大学习毅力以及脱产学习和足够多的时间研究!
python语法基础的学习其实已经是劝退了大部分人!
2.小课群群员广泛,大部分在职人员几乎没有时间看视频课程以及讨论
适合时间多,自主学习能力强的人入门学习,尤其是在校学生!
3.已经入门python爬虫的没必要再学习该小课!
以上作业代码仅供参考!
总而言之
学习需要靠自己,至于培训,见仁见智!!
想要快速,省事,省时省力,都是妄想!!
最后
还是 个人建议:python入门不建议报培训课!!!
请须知!
因为这些你自学就行,网上可以找到很多内容,你不花钱就能学会,你学不会(学废),花钱也没用!
不是广告推销课程,仅仅是记录流水文,非利益相关,如果侵权可联系我删除!!
说是七天,实际上是六天!
新人学,六天,比较难吧,尤其是零基础可能会学废吧!当然不排除有学习大佬,也是可能不用七天吧!
当然你可以学完基础语法再来看这篇,七天应该比较OK!
有疑问可以联系我,虽然我就是个渣渣!