python爬虫入门

python爬虫入门毕设是做爬虫相关的,本来想的是用java写,也写了几个爬虫,其中一个是爬网易云音乐的用户信息,爬了大概100多万,效果不是太满意。之前听说Python这方面比较强,就想用Python试试,之前也没用过

大家好,又见面了,我是你们的朋友全栈君。

毕设是做爬虫相关的,本来想的是用java写,也写了几个爬虫,其中一个是爬网易云音乐的用户信息,爬了大概100多万,效果不是太满意。之前听说Python这方面比较强,就想用Python试试,之前也没用过Python。所以,边爬边学,边学边爬。废话不多说,进入正题。

  1.首先是获取目标页面,这个对用python来说,很简单

#encoding=utf8
import urllib res = urllib.urlopen("http://www.baidu.com") print res.read()

  运行结果和打开百度页面,查看源代码一样。这里针对python的语法有几点说明。

    a).import 就是引入的意思,java也用import,C/C++用的是include,作用一样

    b).urllib 这个是python自带的模块,在以后开发的时候,如果遇到自己需要的功能,python自带的模块中没有的时候,可以试着去网上找一找,比如需要操作MySql数据  库,这个时候python是没有自带的,就可以在网上找到MySQLdb,然后安装引入就行了。

    c).res是一个变量,不用像java,C语言那样声明。用的时候直接写就行了

    d).标点符号。像java,C这些语言,每行代码后面都要用分号或者别的符号,作为结束标志,python不用,用了反了会出错。不过有的时候,会用标点符号,比如冒号,  这个后面再说

    e).关于print,在python2.7中,有print()函数,也有print 语句,作用基本差不多。

    f).#注释

    g).encoding=utf8代表使用utf8编码,这个在代码中有中文的时候特别有用

  2.解析获取的网页中的元素,取得自己想要的,以豆瓣为例,我们想获取这个页面中的所有书籍名称(仅供学习交流)

  http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book

  <span role="heading" aria-level="2">python爬虫入门

  首先获取页面代码:

#encoding=utf8
import urllib
res = urllib.urlopen("http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book")
print res.read()

  获取结果,通过分析页面源代码(建议用firefox浏览器,按F12,可看到源代码),可以定位到有效代码如下:

  <span role="heading" aria-level="2">python爬虫入门

  <span role="heading" aria-level="2">python爬虫入门

  下面我们开始解析(这里用BeautifulSoup,自行下载安装),基本流程:

    a).缩小范围,这里我们通过id=”book”获取所有的书

    b).然后通过class=”title”,遍历所有的书名。

  代码如下:  

复制代码
#encoding=utf8
import urllib
import BeautifulSoup

res = urllib.urlopen("http://www.douban.com/tag/%E5%B0%8F%E8%AF%B4/?focus=book")
soup = BeautifulSoup.BeautifulSoup(res)
book_div = soup.find(attrs={"id":"book"})
book_a = book_div.findAll(attrs={"class":"title"})
for book in book_a:
    print book.string
复制代码

  代码说明:

    a).book_div    通过id=book获取div标签

    b).book_a    通过class=”title”获取所有的book  a标签

    c).for循环     是遍历book_a所有的a标签

    d).book.string  是输出a标签中的内容

  结果如下:

  <span role="heading" aria-level="2">python爬虫入门

  3.存储获取的数据,比如写入数据库,我的数据库用的Mysql,这里就以Mysql为例(下载安装MySQLdb模块这里不做叙述),只写怎么执行一条sql语句

  代码如下:

复制代码
connection = MySQLdb.connect(host="***",user="***",passwd="***",db="***",port=3306,charset="utf8")
cursor = connection.cursor()
sql = "*******"
sql_res = cursor.execute(sql)
connection.commit()
cursor.close()
connection.close()
复制代码

  说明:

    a).这段代码是执行sql语句的流程,针对不同的sql语句,会有不同的处理。比如,执行select的语句,我怎么获取执行的结果,执行update语句,怎么之后成没成功。这  些就要自己动手了

    b).创建数据库的时候一定要注意编码,建议使用utf8

  4.至此,一个简单的爬虫就完成了。之后是针对反爬虫的一些策略,比如,用代理突破ip访问量限制

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155982.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CSS3之border-radius圆角

    CSS3之border-radius圆角

    2021年9月21日
  • Java 高并发解决方案(电商的秒杀和抢购)

    Java 高并发解决方案(电商的秒杀和抢购)电商的秒杀和抢购,对我们来说,都不是一个陌生的东西。然而,从技术的角度来说,这对于Web系统是一个巨大的考验。当一个Web系统,在一秒钟内收到数以万计甚至更多请求时,系统的优化和稳定至关重要。这次我们会关注秒杀和抢购的技术实现和优化,同时,从技术层面揭开,为什么我们总是不容易抢到火车票的原因? 一、大规模并发带来的挑战 在过去的工作中,我曾经面对过5w每秒的高并发秒杀功能,在这个过程中,整…

    2022年5月31日
  • 应用系统之间数据传输的几种方式

    应用系统之间数据传输的几种方式

    2021年10月31日
  • 在虚拟机安装ubuntu步骤_vmware虚拟机安装教程

    在虚拟机安装ubuntu步骤_vmware虚拟机安装教程准备工作VMwareWorkstation15官方下载地址:https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.htmlUbuntu18.04LTS镜像官方下载地址:https://ubuntu.com/download/desktop注:VMwareWorkstation15激…

    2022年9月17日
  • win10安装vmware虚拟机蓝屏_安装完mac虚拟机出现蓝屏

    win10安装vmware虚拟机蓝屏_安装完mac虚拟机出现蓝屏我们在创建虚拟机的时候,选择的是去创建一个默认的虚拟机,然后创建完成直接将系统装在了这个虚拟机中而这,就是这个问题的所在,对于网上下载的sp3_iso系统来讲,是需要一个ida的硬盘,就是要将虚拟机的硬盘模式重新设置一下对当前虚拟机进行设置,将原来的硬盘删除掉,重新添加HardDisk(也就是硬盘的意思)我们选择这个HardDisk选项,点击下一步然后我们出现了这样一…

    2022年8月16日
  • 八、装饰者模式—巴厘岛,奶茶店的困扰! #和设计模式一起旅行#[通俗易懂]

    善于思考,方法总比问题多!故事背景我和漂亮的模式MM来到巴厘岛,这里火山爆发刚刚结束不久,一切要重新开始,来到这个地方几天后,觉得这个地方还是不错,于是就决定在这里开一个奶茶店,因为这里游客比较多,流量大,反正之前我们也没有开店的体验,那么一拍即合,开个奶茶店,体验一下了。 奶茶店的名字:Beautiful Life milk tea!名字起好了,那么我们就开始想如…

    2022年2月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号