Python爬虫之豆瓣电影TOP250

Python爬虫之豆瓣电影TOP250

话不多说先上代码:
`import requests
import bs4
import os
import string
import mysql.connector
def getHTMLText(url):
print(url)
try:
r=requests.get(url,timeout=30)
r.raise_for_status()
r.encoding =“utf-8”
return r.text
except:
return""
def fillUnlivList(soup):
datas=soup.find_all(“div”,{“class”:“item”})
for data in datas:
name=data.find(“span”,{“class”:“title”})
name=nme.string
name=str(name)
score=data.find(“span”,{“class”:“rating_num”})
score=a.string
score=str(score)
introduction=data.find(“span”,{“class”:“inq”})
introduction=idea.string
introduction=str(idea)
mydb = mysql.connector.connect(

    host="localhost",
    user="root",
    passwd="",
    database="runoob_db")
    mycursor=mydb.cursor()
    sql = "INSERT INTO sites (name, score, introduction) VALUES (%s, %s,%s)"
    val=(name,score,introduction)
    mycursor.execute(sql, val)
    mydb.commit()
    print(mycursor.rowcount, "记录插入成功。")

def main():
url=“https://movie.douban.com/top250?start=
print(“正在爬取豆瓣电影TOP250”)
for i in range(0,9):
n=i*25
print(“第”+str(i+1)+“页”)
url_i=url+str(n)+"&filter="
html=getHTMLText(url_i)
soup=bs4.BeautifulSoup(html, “html.parser”)
fillUnlivList(soup)
print(“爬取完成”)

main()
`首先我们需要先把几个需要的包导入。这里就不写怎么导了。

第一步我们先定义获取网页代码的函数
def getHTMLText(url):
print(url)
try:
r=requests.get(url,timeout=30)
r.raise_for_status()#获取失败时报错
r.encoding =“utf-8”#设置编码格式是UTF-8
return r.text
except:
return""

目标网页:https://movie.douban.com/top250?start=
这是第一页的网址在这里插入图片描述
这是第二页的网址在这里插入图片描述
根据我们的观察可以发现第一页与第二页的网址只有start=后面的不同,再根据我们的统计,第一页有25部电影推荐。所以我们可以得出结论:我们需要爬取下一页的内容时我们只需要改变start=后面的数值。
所以我们的分页代码部分就可以写出在这里插入图片描述
开始获取自己想要的内容:每一部电影都在一个li
在这里插入图片描述
电影名字在一个span在这里插入图片描述
因为我们只要第一个所以只用find找到第一个
评分和介绍与名字差不多在这里插入图片描述在这里插入图片描述
datas=soup.find_all(“div”,{“class”:“item”})#找到所有电影的DIV
for data in datas:
name=data.find(“span”,{“class”:“title”})#找到名字的SPAN
name=nme.string
name=str(name)#因为我们获取的name不是String类型,而存入MYSQL必须是String所以需要转换
score=data.find(“span”,{“class”:“rating_num”})
score=a.string
score=str(score)
introduction=data.find(“span”,{“class”:“inq”})
introduction=idea.string
introduction=str(idea)
接下来开始存入数据库:
1.创建数据库,创建表,在这里插入图片描述
字符集一定要是utf8。
2.连接数据库
mydb = mysql.connector.connect(

    host="localhost",
    user="root",
    passwd="",#;我没有密码所以没写
    database="runoob_db")#数据库名字

3.插入数据
mycursor=mydb.cursor()
sql = “INSERT INTO sites (name, score, introduction) VALUES (%s, %s,%s)”
val=(name,score,introduction)
mycursor.execute(sql, val)
mydb.commit()
print(mycursor.rowcount, “记录插入成功。”)
完成后的效果:在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值