爬虫的基本原理:
(1)模拟http请求,请求发送到目标网址
a)urllib.request urlopen( url )
b)Requests 可以定制Header 有些网站有反爬虫机制,要模仿浏览器发送请求
(2)获取html页面
read()
(3)数据分析——从海量的数据提取需要的部分
a)正则表达式
b)字符串拼接
c)BeautifulSoup
(4)数据存储——存储到文件,数据库,打印输出等
#############实例#############################
爬取豆瓣评分最高的250部电影
url = "https://movie.douban.com/top250"
首先模拟http请求,请求发送到目标网址 ,获取html页面
def get_html(url):
res = urllib.request.urlopen(url)
html = res.read().decode()
return html
数据分析——从海量的数据提取需要的部分
def parse_html(htmlfile):
mysoup = BeautifulSoup(htmlfile,"html.parser")
movie_zone = mysoup.find('ol') #获取ol标签里面的内容
movie_list = movie_zone.findAll('li') #获取所有的li标签,返回一个可迭代的对象
for movie in movie_list:
#获取class为title的span标签里面的内容
movie_name = movie.find('span',attrs={'class':'title'}).getText()
movielist.append(movie_name)
#获取下一页
nextPage = mysoup.find('span',attrs={'class':'next'}).find('a')
if nextPage:
global douban
new_page = douban + nextPage['href']
parse_html(get_html(new_page))
数据存储——保存到本地的MySQL数据库
def save_data(movielist):
conn = pymysql.connect('localhost','root','lanse0305*','douban_top250')
cursor = conn.cursor()
sql = "insert into info value(%s,%s)"
for i in range(len(movielist)):
cursor.execute(sql,(i+1,movielist[i]))
conn.commit()
cursor.close()
conn.close()
执行结果:
##################省略中间###################################################