python爬虫系列案例1-抓取猫眼电影top100(读取-解析-存储)

案例:抓取猫眼电影top100
要求:

  1. 获取电影相关信息
  2. 存储在mysql表单中

知识点:

  1. requests请求读取
  2. 正则表达式re解析网页
  3. pymysql存储网页内容
# url:http://maoyan.com/board
# 排名,海报,影名,主演,上映时间,评分
# 存储,mysql
# 模块:pymysql+requests+re(一个正则就可以把上述都可以整出来)

# 第二步:分析html结构
# 第三步:代码写入

import re
import pymysql
import requests



# (1)请求一个单页的内容
def get_one_page(url):
    headers = {
        "Host": "maoyan.com",
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"}
    response = requests.get(url, headers=headers)
    return response.text


# (2)解析单页的html
def parse_one_page(html):
    # 制定规则,正则表达式
    #re.S可以匹配到换行符


    pattern = re.compile('
.*?board-index.*?>(\d+).*?data-src="(.*?)".*?name"> + '.*?>(.*?).*?star">(.*?)

.*?releasetime">(.*?)

'
+ '.*?integer">(.*?).*?fraction">(.*?).*?
'
, re.S) items=re.findall(pattern,html) #print(items) # (3)处理单页的数据 for item in items: yield { "index":item[0], "image":item[1], "title":item[2], "actor":item[3].strip()[3:], "time":item[4].strip()[5:], "score":item[5]+item[6] } # (4)保存单页的数据 def write_to_mysql(content): #连接数据库 conn=pymysql.connect(host="localhost",user="root",passwd="8642807",db="16ban",charset="utf8") #创建游标 cursor=conn.cursor() index=content["index"] image=content["image"] title = content['title'] actor = content['actor'] time = content['time'] score = content['score'] #构建sql语句和数据源 sql="insert into maoyan values(%s,%s,%s,%s,%s,%s)" parm=(index,image,title,actor,time,score) #执行sql语句 cursor.execute(sql,parm) #提交 conn.commit() #关闭 cursor.close() conn.close() # (5)函数回调 def main(num): #重构url url = "http://maoyan.com/board/4?offset="+str(num) html=get_one_page(url) for i in parse_one_page(html): print(i) write_to_mysql(i) # (6)分页处理 #程序入口,不能被外部调用 if __name__=="__main__": for i in range(10): main(i*10)

你可能感兴趣的:(python爬虫)