30个小时 Python 网络爬虫 学习笔记

30个小时 Python 网络爬虫 学习笔记

视频网址https://www.bilibili.com/video/av41205961?from=search&seid=11524919706805810061

目前为止的内容学习,因有信奥基础,得心应手,全是2倍播放速度进行学习,省时省力。2019-4-29

编码也不含糊,尽力独立编写,未完成之前,决不看视频讲解。2019-4-29

『课程目录』:   
├─第一章节:Python 网络爬虫之基础
│      1、课程介绍
│      2、Python初识
│      3、Python基础语法
│      4、Python控制流与小实例实战
│      5、Python函数详解
│      6、Python模块实战
│      7、Python文件操作实战
│      8、Python异常处理实战
│      9、Python面向对象编程实战
│      
├─第二章节:Python网络爬虫之工作原理
│      1、网络爬虫初识:Excel表格自动合并作业讲解
│      2、网络爬虫初识:网络爬虫概述
│      3、网络爬虫工作原理详解
│      
├─第三章节:Python网络爬虫之正则表达式
│      1、正则表达式实战:什么是正则表达式
│      2、正则表达式实战:原子
│      3、正则表达式实战:元字符
│      4、正则表达式实战:模式修正符
│      5、正则表达式实战:贪婪模式与懒惰模式
│      6、正则表达式实战:正则表达式函数
│      7、正则表达式实战:常见正则实例
│      8、简单爬虫的编写
│      9、作业讲解:出版社信息的爬取
│      
└─第四章节:Python网络爬虫之浏览器伪装
        1、Urllib基础
        2、超时设置
        3、自动模拟HTTP请求与百度信息自动搜索爬虫实战
        4、自动模拟HTTP请求之自动POST实战
        5、爬虫的异常处理实战
        6、爬虫的浏览器伪装技术实战
        7、Python新闻爬虫实战
        8、作业讲解:博文信息的爬取
│      
├─第五章节:Python网络爬虫之用户和IP代理池
│      1、糗事百科爬虫实战
│      2、用户代理池构建实战
│      3、IP代理池构建的两种方案实战
│      4、淘宝商品图片爬虫实战
│      5、作业讲解:同时使用用户代理池与IP代理池的方法
│      
├─第六章节 :Python网络爬虫之腾讯微信和视频实战
│      1、微信爬虫实战
│      2、抓包分析实战
│      3、腾讯视频评论爬虫思路介绍
│      4、腾讯视频评论爬虫实战-续
│      
├─第七章节:Python网络爬虫之Scrapy框架
│      1、认识Scrapy框架
│      2、Scrapy框架安装难点解决技巧
│      3、Scrapy常见指令实战
│      4、Scrapy实现当当网商品爬虫实战
│      5、Scrapy模拟登录实战
│      6、Scrapy新闻爬虫项目实战(上)
│      7、Scrapy新闻爬虫项目实战(下)
│      8、Scrapy豆瓣网登陆爬虫与验证码自动识别项目实战1
│      9、Scrapy豆瓣网登陆爬虫与验证码自动识别项目实战2
│      10、如何在Urllib中使用XPath表达式
│      
├─第八章节:Python网络爬虫之Scrapy与Urllib的整合
│      1、Scrapy与Urllib的整合使用1(使用以京东图书商品爬虫为例)
│      2、Scrapy与Urllib的整合使用2(以京东图书商品爬虫为例)
│      3、Scrapy与Urllib的整合使用3(以京东图书商品爬虫为例)
│      4、Scrapy与Urllib的整合使用4(以京东图书商品爬虫为例)
│      5、淘宝商品大型爬虫项目与自动写入数据库实战)
│      
├─第九章节:Python网络爬虫之扩展学习
│      1、补充内容:BeautifulSoup基础实战
│      2、补充内容:PhantomJS基础实战
│      3、补充:腾讯动漫爬虫项目实战1(JS动态触发+id随机生成反爬破解实战)
│      4、补充:腾讯动漫爬虫项目实战2(JS动态触发+id随机生成反爬破解实战)
│      
├─第十章节:Python网络爬虫之分布式爬虫
│      1、分布式爬虫实现原理
│      2、分布式爬虫之Docker基础
│      3、分布式爬虫之Redis基础
│      4、分布式爬虫构建实战

9、Python面向对象编程实战https://www.bilibili.com/video/av41205961/?p=9

45:55开始的作业建议,建议附上开始的excel文件情况,经程序处理后的excel文件情况,这样让读者处理问题更有针对性。如果可能,最好能用程序演示该作业所要达到的效果,当然,源代码是无需展示的。2019-4-29

 

 读取的第一个文件内容

读取的第二个文件内容

 

 

读取的第3个文件内容

 

 

 合并后文件内容

 

#将多个Excel表格里面的内容合并到一个文件中。

#原视频中代码太啰嗦,以下进行简化

#2019-5-4 16:16 AC
#编码核心“数据的流动”,读出的数据要能写入文档。
import xlrd,xlsxwriter
all_file=["1.xlsx","2.xlsx","3.xlsx"]
out_file="out.xlsx"
fh=xlrd.open_workbook(all_file[0])
sheets=fh.sheets()
sheet_nums=len(sheets)
file_value=[]
for x in range(0,sheet_nums):
    for file_name in all_file:
        fh=xlrd.open_workbook(file_name)
        sheet=fh.sheet_by_index(x)
        nrows=sheet.nrows
        for row in range(0,nrows):
            file_value.append(sheet.row_values(row))#一行一行读取#此处写成file_value.append(sheet.row(row))
rows=len(file_value)
fh=xlsxwriter.Workbook(out_file)
sheet=fh.add_worksheet()
for row in range(0,rows):
    cols=len(file_value[row])
    for col in range(0,cols):
        sheet.write(row,col,file_value[row][col])#一格一格写入
fh.close()

 P20  8、简单爬虫的编写https://www.bilibili.com/video/av41205961/?p=20
10:19开始的作业        

#提取出版社信息并写入文件中
#2019-5-5 18:22
import urllib.request,re
string=urllib.request.urlopen("https://read.douban.com/provider/all").read().decode("UTF-8")
pat="class=\"name\">(\S+)</div>"
rst=re.compile(pat).findall(string)
fh=open("name.txt","w")
cnt=len(rst)
for index in range(0,cnt):
    fh.write(rst[index]+"\n")
fh.close()
 

P24  3、自动模拟HTTP请求与百度信息自动搜索爬虫实战https://www.bilibili.com/video/av41205961/?p=24

21:18百度网站对应的数据收不到,无奈找了个网站,重新编写2019-5-6

import urllib.request,re
for page in range(2,5):
    url="http://hzwer.com/page/"+str(page)
    data=urllib.request.urlopen(url).read().decode("utf-8")
    pat='title="(.+?)"'
    rst=re.compile(pat).findall(data)
    for i in range(0,len(rst)):
        print(rst[i])

P25   4、自动模拟HTTP请求之自动POST实战https://www.bilibili.com/video/av41205961/?p=25

#因视频中的链接失效,故重新寻找可post的链接。2019-5-6 20:05
#寻找过程就花费了1个小时,希望对读者有效。
#http://how2j.cn/k/html/html-form/190.html
import urllib.request,urllib.parse
urlpost="http://how2j.cn/study/login.jsp"
postdata=urllib.parse.urlencode({"name":"123","password":"456"}).encode("utf-8")
req=urllib.request.Request(urlpost,postdata)
htm=urllib.request.urlopen(req).read().decode("utf-8")
fh=open("post.htm","w")
fh.write(htm)
fh.close()
 

P26  5、爬虫的异常处理实战https://www.bilibili.com/video/av41205961/?p=26

原视频的网站已能爬取,故另找网站2019-5-7

import urllib.request
import urllib.error
try:
    urllib.request.urlopen("http://www.xabqq.com/")
except urllib.error.URLError as e:#此处写成except urllib.error.URLrror as e:
    if hasattr(e,"code"):#此处写成if (hasattr(e,"code")):
        print(e.code)
    if hasattr(e,"reason"):#此处写成if (hasattr(e,"reason")):
        print(e.reason)


输出结果如下:

[Errno 11004] getaddrinfo failed

P27   6、爬虫的浏览器伪装技术实战https://www.bilibili.com/video/av41205961/?p=27

#"http://blog.csdn.net"无需伪装,可以访问
#"https://www.baidu.com/s?wd=python"需要伪装,才能访问2019-5-8
import urllib.request
url="https://www.baidu.com/s?wd=python"
opener=urllib.request.build_opener()
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0")#此处写成headers="User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0"
opener.addheaders=[headers]
data=opener.open(url).read()
fh=open("baidu.htm","wb")
fh.write(data)
fh.close()

P28   7、Python新闻爬虫实战https://www.bilibili.com/video/av41205961/?p=28

#Python新闻爬虫实战2019-5-9
import urllib.request,re
data=urllib.request.urlopen("https://news.163.com/").read().decode("utf-8","ignore")
pat1='a href="(https://news.163.com/.+?\.html)'
urllist=re.compile(pat1).findall(data)
for url in urllist:
    pat2="/(\w+?\.html)"
    filename=re.compile(pat2).findall(url)
    urllib.request.urlretrieve(url,filename[0])#此处写成urllib.request.retrieve(url,filename[0])
    

P28   7、Python新闻爬虫实战https://www.bilibili.com/video/av41205961/?p=28

32:08作业

#作业 爬取CSDN博客  2019-5-12 20:25
#百度需要伪装,下载对应的搜索页面
#以下代码,能下载一到两个页面,之后程序报错,以目前水平,该代码可以接受
import urllib.request,re
opener=urllib.request.build_opener()
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36")
opener.addheaders=[headers]
data=opener.open("https://www.baidu.com/s?wd=python").read().decode("utf-8")
pat='"url":"(http://www.baidu.com/link\?url.+?)"'
rst=re.compile(pat).findall(data)
num=len(rst)
for i in range(0,num):
    urllib.request.urlretrieve(rst[i],str(i)+".htm")#此处写成urllib.request.retrieve(url[i],lst[i]+".htm")
    

P30   1、糗事百科爬虫实战https://www.bilibili.com/video/av41205961/?p=30

#糗事百科爬虫实战2019-5-14
import urllib.request,re
opener=urllib.request.build_opener()
headers=("User-Agent","Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0")
opener.addheaders=[headers]
urllib.request.install_opener(opener)
for i in range(1,3):
    page=urllib.request.urlopen("https://www.qiushibaike.com/text/page/"+str(i)+"/").read().decode("utf-8")
    pat='<div class="content">.*?<span>(.+?)</span>'#此处写成pat='<div class="content"><span>(.+?)</span>'
    rst=re.compile(pat,re.S).findall(page)#此处写成rst=re.compile(pat).findall(page)
    for j in range(0,len(rst)):
        print("------------------------------------------------------------------------------")
        print(rst[j])
    
P31   2、用户代理池构建实战https://www.bilibili.com/video/av41205961/?p=31

#用户代理池构建实战2019-5-14
import urllib.request,re,random
def ua():
    uapools=[
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; 360SE)",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1",
        "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)",
        "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
        "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SE 2.X MetaSr 1.0; SE 2.X MetaSr 1.0; .NET CLR 2.0.50727; SE 2.X MetaSr 1.0)"
        ]
    thisua=random.choice(uapools)
    opener=urllib.request.build_opener()
    headers=("User-Agent",thisua)
    opener.addheaders=[headers]
    urllib.request.install_opener(opener)
    return thisua
for i in range(1,3):
    ua()
    page=urllib.request.urlopen("https://www.qiushibaike.com/text/"+str(i)+"/").read().decode("utf-8")
    pat='<div class="content">.*?<span>(.+?)</span>'
    rst=re.compile(pat,re.S).findall(page)
    for content in rst:
        print("-----------------------------------------")
        print(content)
   

  

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值