本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关。本文章是自己学习的一些记录。欢迎各位大佬点评!

源码在GitHub上面,且相关介绍更加全面。链接如下https://github.com/zhazhalin/doubanTop250Spider.git或者点击如下链接github链接地址首先今天是第一天写博客,感受到了博客的魅力,博客不仅能够记录每天的代码学习情况,并且可以当作是自己的学习笔记,以便在后面知识点不清楚的时候前来复习。这是第一次使用爬虫爬取网页,这里展示的是爬取豆瓣电影top250的整个过程,欢迎大家指点。

这里我只爬取了电影链接和电影名称,如果想要更加完整的爬取代码,请联系我。qq 1540741344 或者点击github链接地址 欢迎交流

开发工具: pycharm、chrome分析网页在开发之前你首先要去你所要爬取的网页提取出你要爬取的网页链接,并且将网页分析出你想要的内容。

在开发之前首先要导入几个模块,模块描述如下,具体不知道怎么导入包的可以看我下一篇内容

首先定义几个函数,便于将各个步骤的工作分开便于代码管理,我这里是分成了7个函数,分别如下:@主函数入口

if __name__=="__main__":       #程序执行入口main()

@捕获网页html内容 askURL(url)这里的head的提取是在chrome中分析网页源码获得的,具体我也不做过多解释,大家可以百度

def askURL(url):  #得到指定网页信息的内容 #爬取一个网页的数据# 用户代理,本质上是告诉服务器,我们是以什么样的机器来访问网站,以便接受什么样的水平数据head={"User-Agent":"Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 84.0.4147.89 Safari / 537.36"}request=urllib.request.Request(url,headers=head)         #request对象接受封装的信息,通过urllib携带headers访问信息访问urlresponse=urllib.request.urlopen(request)                  #用于接收返回的网页信息html=response.read().decode("utf-8")                      #通过read方法读取response对象里的网页信息,使用“utf-8”return  html                                             #返回捕获的网页内容,此时还是未处理过的

@将baseurl里的内容进行逐一解析 getData(baseURL)这里面的findlink和findname是正则表达式,可以首先定义全局变量

findlink=r'<a class="" href="(.*?)"'
findname=r'<span class="title">(.*?)</span>'

def getData(baseURL):

dataList=[] #初始化datalist用于存储获取到的数据

for i in range(0,10):

url=baseURL+str(i*25)

html=askURL(url) #保存获取到的源码

soup=BeautifulSoup(html,"html.parser") #对html进行逐一解析,使用html.parser解析器进行解析

for item in soup.find_all("div",class_="item"): #查找符合要求的字符串 ,形成列表,find_all是查找所有的class是item的div

data=[] #初始化data,用于捕获一次爬取一个div里面的内容

item=str(item) #将item数据类型转化为字符串类型

# print(item)

link=re.findall(findlink,item)[0] #使用re里的findall方法根据正则提取item里面的电影链接

data.append(link) #将网页链接追加到data里

name=re.findall(findname,item)[0] #使用re里的findall方法根据正则提取item里面的电影名字

data.append(name) #将电影名字链接追加到data里

# print(link)

# print(name)

dataList.append(data) #将捕获的电影链接和电影名存到datalist里面

return dataList #返回一个列表,里面存放的是每个电影的信息

print(dataList)

@保存捕获的数据到excel saveData(dataList,savepath)

def saveData(dataList,savepath):                            #保存捕获的内容到excel里,datalist是捕获的数据列表,savepath是保存路径book=xlwt.Workbook(encoding="utf-8",style_compression=0)#初始化book对象,这里首先要导入xlwt的包sheet=book.add_sheet("test",cell_overwrite_ok=True)     #创建工作表col=["电影详情链接","电影名称"]                           #列名for i in range(0,2):sheet.write(0,i,col[i])                             #将列名逐一写入到excelfor i in range(0,250):data=dataList[i]                                    #依次将datalist里的数据获取for j in range(0,2):sheet.write(i+1,j,data[j])                      #将data里面的数据逐一写入book.save(savepath)          

@保存捕获的数据到数据库

def saveDataDb(dataList,dbpath):initDb(dbpath)                                          #用一个函数初始化数据库conn=sqlite3.connect(dbpath)                            #初始化数据库cur=conn.cursor()                                       #获取游标for data in dataList:                                   for index in range(len(data)):  data[index]='"'+data[index]+'" '                #将每条数据都加上""#每条数据之间用,隔开,定义sql语句的格式sql='''insert into test(link,name) values (%s)         '''%','.join (data)cur.execute(sql)                                    #执行sql语句conn.commit()                                       #提交数据库操作conn.close()print("爬取存入数据库成功!")

@初始化数据库 initDb(dbpath)

def initDb(dbpath):conn=sqlite3.connect(dbpath)cur=conn.cursor()sql='''create table test(id integer primary key  autoincrement,link text,name varchar )'''cur.execute(sql)conn.commit()cur.close()conn.close()

@main函数,用于调用其他函数 main()

def main():dbpath="testSpider.db"                             #用于指定数据库存储路径savepath="testSpider.xls"                          #用于指定excel存储路径baseURL="https://movie.douban.com/top250?start="   #爬取的网页初始链接dataList=getData(baseURL)saveData(dataList,savepath)saveDataDb(dataList,dbpath)

你学会了吗 获取加群加群:1136192749

app.vue里使用data_Python爬虫使用正则爬取网站,正则都不会就别玩爬虫了!相关推荐

  1. Python爬虫实战之爬取网站全部图片(一)

    Python爬虫实战之爬取网站全部图片(二) Python爬虫实战之通过ajax获得图片地址实现全站图片下载(三) 一.获得图片地址 和 图片名称 1.进入网址之后 按F12  打开开发人员工具点击e ...

  2. Python爬虫实战之爬取网站全部图片(二)

    通过python 来爬取网站内所有的图片到本地 第三篇是动态获取参数构造图片地址实现下载图片  传送门:https://blog.csdn.net/qq_33958297/article/detail ...

  3. python爬虫使用正则爬取网站

    本文章的所有代码和相关文章, 仅用于经验技术交流分享,禁止将相关技术应用到不正当途径,滥用技术产生的风险与本人无关. 本文章是自己学习的一些记录.欢迎各位大佬点评! 在这里放上我爬取的数据的网页,我将 ...

  4. 入门小远学爬虫(二)(四)简单GET型网页爬虫实战——“前程无忧”爬虫岗位信息的爬取之正则概念以及Python中re库的简单应用

    文章目录 前言 一.正则表达式是什么? 二.正则表达式语法 1.简介 2.干货分享 三.re库 1.安装 2.用法 四.终于进入正题 小结 前言 这是本系列第一个实战项目的第四课,有关前三课相关的内容 ...

  5. python怎么爬取一个网页图片_python爬虫怎么实现爬取网站图片?

    对于网页结构而言,图片也就是一个文件及文件目录+名字的放在html中的src标签里.找到这个src标签对应的内容,就可以图片爬取下来. ps:有些网站的图片可能不是放在src标签里的,可能放在data ...

  6. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xa)的解决方法【华为云分享】

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  7. 【Python成长之路】Python爬虫 --requests库爬取网站乱码(\xe4\xb8\xb0\xe5\xaf\x8c\xe7\x9)的解决方法

    [写在前面] 在用requests库对自己的CSDN个人博客(https://blog.csdn.net/yuzipeng)进行爬取时,发现乱码报错(\xe4\xb8\xb0\xe5\xaf\x8c\ ...

  8. python爬虫最难爬取网站——天猫淘宝,多页爬取遭反爬IP被禁。求大佬赐教。

    python爬虫设置代理ip池--方法(一) 爬取任务是:爬取所在地为新疆的买新疆特产的店铺 代码如下: import requests from lxml.html import etree imp ...

  9. Python爬虫练习:爬取网站动漫图片

    前言 有一段没用 python 了,我也不知道自己为什么对 python 越来越淡,可能自己还是比较喜欢 android ,毕竟自己第一次接触编程就是 android,为了android学java,然 ...

最新文章

  1. 实施项目--为什么开发人员一直在抱怨需求变动
  2. Material Design Lite,简洁惊艳的前端工具箱。
  3. VTK:相互作用之RubberBand2DObserver
  4. 假如你学过高数,那你这一辈子都不会忘记这个人
  5. java同步方法同步块_java使用同步方法和同步块的区别
  6. core Animation动画
  7. golang的指针和切片
  8. spring-security3 配置和使用
  9. 用iostat对linux硬盘IO性能进行检测
  10. javascript之querySelector和querySelectorAll
  11. kell Vision5有那些使用技巧呢
  12. 共享计算机桌面,DeskTopShare桌面屏幕共享软件
  13. 宝塔面板windows建站教程_宝塔面板建站教程
  14. C盘Administrator中 .m2/repository里面是什么
  15. 用project做项目计划及总结报表
  16. mediawiki mysql配置_安装MediaWiki
  17. iOS 设置tableview组头组尾的背景色
  18. 中文版Geneve02
  19. Python 列表(list)
  20. java图片裁剪和java生成缩略图

热门文章

  1. 性能测试中用LambdaProbe监控Tomcat
  2. NodeJS实现TCPSocket(套接字)服务器和客户端
  3. OpenGL开发学习指南二(glfw+glad)
  4. 跨平台 C/C++ memcached 客户端 memcacheclient 介绍
  5. shell awk sed tr grep 语法汇总
  6. windows7 下vs2015使用opencv3.30、opencv_contrib库
  7. 数字图像处理实验(12):PROJECT 05-03,Periodic Noise Reduction Using a Notch Filter
  8. java lambda 局部变量_java Lambda表达式访问局部变量详细介绍
  9. python列表迭代器_关于Python中迭代器的作用
  10. 编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻