豆瓣爬虫:top250电影

最近整理下之前学python时写过的小爬虫,写的第一个爬虫就是豆瓣top250电影。用到requests,lxml和pymysql。

思路就是先利用xpath语法和etree解析网页抓取一个页面的内容,利用Google的浏览器自带的copy xpath即可得到对应元素的xpath路径,再找到翻页按钮的链接并返回链接作为下一次调用,用for循环和while循环轻松实现爬取。然后就是pymysql的基本操作,先connect你的数据库,注意设定编码:charset=‘ ’,定义你的cursor,让cursor执行你的操作,最后需要close数据库。

import requests
from lxml import etree
import pymysql

db = pymysql.connect('localhost','你的用户名','你的密码','你的数据库名',charset = 'utf8')
cursor = db.cursor()

url = 'https://movie.douban.com/top250'

def xun(url):
	res = requests.get(url).text
	s = etree.HTML(res)#利用lxml的etree解析网页
	for i in range(1,26):
		a = '//*[@id="content"]/div/div[1]/ol/li[{}]/div/div[2]/div[1]/a/span[1]/text()'.format(i)
		b = '//*[@id="content"]/div/div[1]/ol/li[{}]/div/div[2]/div[2]/div/span[2]/text()'.format(i)
		c = '//*[@id="content"]/div/div[1]/ol/li[{}]/div/div[2]/div[2]/p[1]/text()'.format(i)
		m = s.xpath(a)[0]
		p = s.xpath(b)[0]
		d_s = s.xpath(c)
		sql = "insert into movies_detail (movies,score,director_actor,year_type) values (%s,%s,%s,%s)"#被插入的项名不能加引号,与MySQL操作不同
		cursor.execute(sql,(m,p,d_s[0].strip(),d_s[1].strip()))#当被插入的数据项有多个时,如(插入语句,(属性1,属性2,属性3.。。)),否则数据插不进
		db.commit()

	nextpage = s.xpath('//*[@id="content"]/div/div[1]/div[2]/span[3]/a/@href')#用/@href抓取翻页链接
	if nextpage:
		return 'https://movie.douban.com/top250' + nextpage[0]
	return None

while url:#循环翻页
	url = xun(url)	
db.close()





		

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值