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/小说/?focus=book

首先获取页面代码:

复制代码
#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,可看到源代码),可以定位到有效代码如下:

下面我们开始解析(这里用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标签中的内容

结果如下:

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访问量限制

  

  如果你是准备学习Python或者正在学习(想通过Python兼职),下面这些你应该能用得上:

包括:Python安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

相关推荐
阿图灵3 分钟前
OpenCV 图像操作六件套:读取、裁剪、缩放、旋转、通道分割与保存
图像处理·人工智能·python·深度学习·opencv·计算机视觉
被怪兽吃掉了5 分钟前
5.2.1一维组数定义方式
开发语言·c++·算法
桐桐桐11 分钟前
Python 实战:批量生成带来源参数的 WhatsApp 短链 + 二维码
服务器·数据库·python·前端框架·ip·跨境电商·独立站
TheBestRucy13 分钟前
Python 九阳神功之肆:网络编程 · Socket 从入门到实战
开发语言·网络·python
j7~16 分钟前
【C++】《C++二叉搜索树(BST)从入门到精通:概念、实现与Key/Value模型全解析》
开发语言·c++·学习·二叉搜索树
hehelm17 分钟前
仿muduo库实现高并发服务器—Channel类
linux·服务器·开发语言·网络·c++
末代iOS程序员华仔19 分钟前
Codex + Figma 生成 Objective‑C (UIKit) 完整工作流
c语言·开发语言·figma
SomeB1oody27 分钟前
【RustyML入门】7.3. 性能调优与并行
开发语言·后端·机器学习·rust·教程
Java后端的Ai之路28 分钟前
01、Python - 设计模式介绍
java·人工智能·python·设计模式·通用
余额瞒着我当琳34 分钟前
C++STL--list底层实现,迭代器分类,模拟list的迭代器封装、实现
java·开发语言·c++