猫眼电影爬取(三):requests+pyquery,并将数据存储到mysql数据库

还是以猫眼电影为例,这次用pyquery库进行爬取

1.简单demo,看看如何使用pyquery提取信息,并将提取到的数据进行组合

# coding: utf-8
# author: hmk

import requests
from pyquery import PyQuery as pq

url = ‘http://maoyan.com/board/4‘
header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
              "Accept-Encoding": "gzip, deflate, sdch",
              "Accept-Language": "zh-CN,zh;q=0.8",
              "Cache-Control": "max-age=0",
              "Connection": "keep-alive",
              "Host": "maoyan.com",
              "Referer": "http://maoyan.com/board",
              "Upgrade-Insecure-Requests": "1",
              "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"}
r = requests.get(url, headers=header)
r.encoding = r.apparent_encoding
html = r.text
print(type(html))

doc = pq(html)
# print((doc(‘dd‘).find(‘.board-index‘)))
# print(doc(‘.name‘).text())
# print(doc(‘.releasetime‘).text())
# print(doc(‘dd‘).find(‘.integer‘).text()+doc(‘.fraction‘).text())
list = []
for t in doc(‘dd‘):
   index = pq(t).find(‘.board-index‘).text()
   print(index)
   movie = pq(t).find(‘.name‘).text()
   print(movie)
   time = pq(t).find(‘.releasetime‘).text()
   print(time)
   score = pq(t).find(‘.integer‘).text() + pq(t).find(‘.fraction‘).text()
   print(score)
   list.append([index, movie, time, score])
print(list)

2.正式代码

# coding: utf-8
# author: hmk

import requests
from pyquery import PyQuery as pq
import pymysql.cursors

def get_html(url, header):
    try:
         r = requests.get(url=url, headers=header)
         r.encoding = r.apparent_encoding
         return r.text
    except:
        return None

def get_data(html, list_data):
    doc = pq(html)
    for t in doc(‘dd‘):
        index = pq(t).find(‘.board-index‘).text()
        print(index)
        movie = pq(t).find(‘.name‘).text()
        print(movie)
        time = pq(t).find(‘.releasetime‘).text()
        print(time)
        score = pq(t).find(‘.integer‘).text() + pq(t).find(‘.fraction‘).text()
        print(score)
        list_data.append([index, movie, time, score])

def write_sql(data):
    conn = pymysql.connect(host=‘localhost‘,
                           user=‘root‘,
                           password=‘123456‘,
                           db=‘test‘,
                           charset=‘utf8‘)
    cur = conn.cursor()

    for i in data:
        """这里的data参数是指正则匹配并处理后的列表数据(是一个大列表,包含所有电影信息,每个电影信息都存在各自的一个列表中;
        对大列表进行迭代,提取每组电影信息,这样提取到的每组电影信息都是一个小列表,然后就可以把每组电影信息写入数据库了)"""
        movie = i  # 每组电影信息,这里可以看做是准备插入数据库的每组电影数据
        sql = "insert into maoyan_movie(ranking,movie,release_time,score) values(%s, %s, %s, %s)"  # sql插入语句
        try:
            cur.execute(sql, movie)  # 执行sql语句,movie即是指要插入数据库的数据
            conn.commit()  # 插入完成后,不要忘记提交操作
            print(‘导入成功‘)
        except:
            print(‘导入失败‘)
    cur.close()  # 关闭游标
    conn.close()  # 关闭连接

def main():
    start_url = ‘http://maoyan.com/board/4‘
    depth = 10  # 爬取深度(翻页)
    header = {"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
              "Accept-Encoding": "gzip, deflate, sdch",
              "Accept-Language": "zh-CN,zh;q=0.8",
              "Cache-Control": "max-age=0",
              "Connection": "keep-alive",
              "Host": "maoyan.com",
              "Referer": "http://maoyan.com/board",
              "Upgrade-Insecure-Requests": "1",
              "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36"}

    for i in range(depth):
        url = start_url + ‘?offset=‘ + str(10 * i)
        html = get_html(url, header)
        list_data = []
        get_data(html, list_data)
        write_sql(list_data)
        # print(list_data)

if __name__ == "__main__":
    main()

其实就这个例子来说,使用pyquery来提取信息是最简单省事的了,直接使用css选择器就可以把想要的数据拿到

原文地址:https://www.cnblogs.com/hanmk/p/9236033.html

时间: 2024-10-04 21:02:28

猫眼电影爬取(三):requests+pyquery,并将数据存储到mysql数据库的相关文章

Scrapy爬取慕课网(imooc)所有课程数据并存入MySQL数据库

爬取目标:使用scrapy爬取所有课程数据,分别为 1.课程名 2.课程简介 3.课程等级 4.学习人数 并存入MySQL数据库  (目标网址  http://www.imooc.com/course/list) 一.导出数据文件到本地 1.新建imooc项目 1 scrapy startproject imooc 2.修改 items.py,添加项目item 1 from scrapy import Item,Field 2 class ImoocItem(Item): 3 Course_na

使用scrapy简易爬取豆瓣9分榜单图书并存放在mysql数据库中

注:大部分内容参考http://www.cnblogs.com/voidsky/p/5490798.html 首先创建一个项目douban9fen [email protected]:~/pachong$ scrapy startproject douban9fen New Scrapy project 'douban9fen', using template directory '/usr/local/lib/python2.7/dist-packages/scrapy/templates/p

猫眼电影爬取(二):requests+beautifulsoup,并将数据存储到mysql数据库

上一篇通过requests+正则爬取了猫眼电影榜单,这次通过requests+beautifulsoup再爬取一次(其实这个网站更适合使用beautifulsoup库爬取) 1.先分析网页源码 可以看出每部电影信息都包含在一堆<dd>...</dd>标签中,所以第一步可以通过beautifulsoup库解析出所有<dd>标签对,然后再从<dd>标签对中依次解析排名所在的<i>标签,电影名所在的<p>标签,上映时间所在的<p>

[python爬虫] Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium爬取我的个人博客信息,然后存储在数据库MySQL中,以便对数据进行分析,比如分析哪个时间段发表的博客多.结合WordCloud分析文章的主题.文章阅读量排名等.        这是一篇基础性的文章,希望对您有所帮助,如果文章中出现错误或不足之处,还请海涵.下一篇文章会简单讲解数据分析的过程. 一.

爬取链家任意城市租房数据(北京朝阳)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 15:56 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市租房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import os

爬取链家任意城市二手房数据(天津)

1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 # @Time : 2019-08-16 12:40 4 # @Author : Anthony 5 # @Email : [email protected] 6 # @File : 爬取链家任意城市二手房数据.py 7 8 9 import requests 10 from lxml import etree 11 import time 12 import xlrd 13 import o

python之scrapy爬取数据保存到mysql数据库

1.创建工程 scrapy startproject tencent 2.创建项目 scrapy genspider mahuateng 3.既然保存到数据库,自然要安装pymsql pip install pymysql 4.settings文件,配置信息,包括数据库等 # -*- coding: utf-8 -*- # Scrapy settings for tencent project # # For simplicity, this file contains only setting

用scrapy爬取ttlsa博文相关数据存储至mysql

运维生存时间这个博客内容还是比较详尽的,对与运维技术人员的我来说,是偶尔溜达进来的地方,从中也学习到不少知识,感谢博主的奉献! 这段时间我就通过scrapy来收集下此博客内文章的相关数据,供以后需要从中提取我认为值得看的文章作为数据依据. 今天,要做的事就是把数据先抓取出来,后期再将其数据存储起来. 首先通过命令scrapy genspider ttlsa www.ttlsa.com创建一个蜘蛛程序应用名为ttlsa 其次在ttlsa.py下编写如下代码. # -*- coding: utf-8

scrapy 爬取知乎问题、答案 ,并异步写入数据库(mysql)

  python版本  python2.7 爬取知乎流程: 一 .分析 在访问知乎首页的时候(https://www.zhihu.com),在没有登录的情况下,会进行重定向到(https://www.zhihu.com/signup?next=%2F)这个页面, 爬取知乎,首先要完成登录操作,登陆的时候观察往那个页面发送了post或者get请求.可以利用抓包工具来获取登录时密码表单等数据的提交地址. 1.利用抓包工具,查看用户名密码数据的提交地址页就是post请求,将表单数据提交的网址,经过查看