目标是利用python爬取百度搜索的电影

在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接

首先我们先在mysql中建表

create table liubo4(

id intnotnull auto_increment,

score VARCHAR(50) DEFAULT 0,

name VARCHAR(50) DEFAULT 0,

Pic VARCHAR(200) DEFAULT 0,

dianyingurl VARCHAR(200) DEFAULT 0,

leixing VARCHAR(50) DEFAULT 0,

niandai VARCHAR(50) DEFAULT 0,

diqu VARCHAR(50) DEFAULT 0,

PRIMARY KEY (id))

其中 图片地址列和电影地址列的 字段名要设置长一点 否则插入时不够,最好为每一列设置默认值。

我们在切换页数时会发现,浏览器地址栏中是没有变化的,这就使得无法直接用地址栏的url变化和xpath来获取标签进行爬取。

那么我们就用另外一种-----解析json字符串。

首先打开f12

我们在切换页数时,会出现两个记录。

点开1.2两个行的行踪记录,能看到他们的Request URL

仔细看会发现这两个request的url主要不同在在于:第二页比第一页的pn多了8,那么我们就可以根据这个规律,在python中利用for 循环来请求125页的爬取。

找到了页面的规律,我们再去寻找具体的标签。

我们可以看到我们需要的 评分 名字 都被分别存放在 1.[data]-[result]-[additional]   2.[data]-[result]-[ename] 之中 。 而且每一页八部电影,分别被存在在result中的排序0-7。

那么图片url和电影url在哪呢 我们直接打开request url

在json字符串中 我们可以找到 picurl  而电影名字点开一部电影可以发现前部分的域名都是一样的 再加上不同的电影名字。

代码

importrequestsimportjsonimportreimportosimportpickleimportpymysql

db= pymysql.connect('localhost', 'root', '123456', 'languid')连接mysql

urlbase= "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?resource_id=28286&from_mid=1&&format=json&ie=utf-8&oe=utf-8&query=%E7%94%B5%E5%BD%B1&sort_key=16&sort_type=1&stat0=&stat1=&stat2=&stat3=&pn="urllist=[]for i in range(1,125):

url= urlbase+str(8*i)

urllist.append(url)

listxixi=[]for uri inurllist:

headers= {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36)"}

response= requests.get(uri,headers=headers).text

json_str=json.loads(response) 解析json字符串

aa=json_str['data'][0]['result'][0]['additional']

bb=json_str['data'][0]['result'][0]['ename']

cc=json_str['data'][0]['result'][0]['kg_pic_url']

dd='https://www.baidu.com/s?rsv_idx=1&tn=44004473_1_oem_dg&wd='+json_str['data'][0]['result'][0]['ename']

listxixi.append([aa, bb, cc, dd])

cursor=db.cursor()

sql= "insert into liubo4(name,score,Pic,dianyingurl) Values(%s,%s,%s,%s)"#这里使用格式化字符串,用占位符cursor.executemany(sql ,listxixi)

db.commit()

db.close()

这里使用insert语句中的 executemany 批量插入到mysql中 。首先要创建一个list 然后再插入mysql。

然后用第二种遍历commit 逐条提交

importrequests

importjsonimportreimportosimportpickleimportpymysql

db= pymysql.connect('localhost', 'root', '123456', 'languid')

urlbase= "https://sp0.baidu.com/8aQDcjqpAAV3otqbppnN2DJv/api.php?resource_id=28286&from_mid=1&&format=json&ie=utf-8&oe=utf-8&query=%E7%94%B5%E5%BD%B1&sort_key=16&sort_type=1&stat0=&stat1=&stat2=&stat3=&pn="urllist=[]for i in range(1,124):

url= urlbase+str(8*i)

urllist.append(url)for uri inurllist:

headers= {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36)"}

response= requests.get(uri,headers=headers).text

json_str=json.loads(response)

aa=json_str['data'][0]['result'][0]['additional']

bb=json_str['data'][0]['result'][0]['ename']

cc=json_str['data'][0]['result'][0]['kg_pic_url']

dd='https://www.baidu.com/s?rsv_idx=1&tn=44004473_1_oem_dg&wd='+json_str['data'][0]['result'][0]['ename']

cursor=db.cursor()

sql= "insert into liubo3(score,name,Pic,dianyingurl,leixing,niandai,diqu) VALUES ('%s','%s','%s','%s','犯罪','大陆','2016')" %(aa,bb,cc,dd)cursor.execute(sql)

db.commit()

这里的标签中的类型、地区、年代是直接写死的 ,暂且没有找到好的办法去寻找规律。

附上一个用beautifulsoup简单爬取标签的代码

importrequestsfrom bs4 importBeautifulSoupimportpymysql

headers= {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36)"}

url='https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=44004473_1_oem_dg&wd=%E7%94%B5%E5%BD%B1&rsv_pq=c30325e3000821d1&rsv_t=a23ejDCMhrNpbUK9fSZYvGt62pChqFxtcBIduHebPB%2BFDC%2BPosF8jTkgd1ZiL4KWiuTzBg5rtwY&rqlang=cn&rsv_enter=1&rsv_sug3=5&rsv_sug1=4&rsv_sug7=100'req= requests.get(url, headers=headers)

soup= BeautifulSoup(req.text,'lxml')

#xml= soup.find_all('p',class_='op_exactqa_tag_stat0')

#ddd= soup.find_all ('p',class_='op_exactqa_tag_stat1')

ccc= soup.find_all('p',class_='op_exactqa_tag_stat2')

leixin=[]for name inccc:

niandai=name.get_text()

db= pymysql.connect('localhost', 'root', '123456', 'languid')

cursor=db.cursor()sql = "insert into liubo2(niandai)VALUES ('%s')"%(niandai)

cursor.execute(sql)

db.commit()

但是爬取到表中是整个list传入到表格,还没有学习透彻。

在整个爬虫制作过程中,学习网上爬取豆瓣电影的xpath办法失败了。

存入到mysql中的构架。

将爬取到的数据写入txt或者csv中

with open('wozuishuai5.txt', 'a+') as f:

f.write('\n'+aa+'\n'+bb+'\n'+cc+'\n'+dd)

python爬虫下载电影百度文档_写一个python 爬虫爬取百度电影并存入mysql中相关推荐

  1. tushare学习文档_介绍一个python股票分析包tushare——韭菜的自我修养

    文章来源:97年陈伯伯作者:Keivan Chan Tushare是一个免费.开源的python财经数据接口包.主要实现对股票等金融数据从数据采集.清洗加工 到 数据存储的过程,能够为金融分析人员提供 ...

  2. 用 Python selenium爬取股票新闻并存入mysql数据库中带翻页功能demo可下载

    用 Python selenium爬取实时股票新闻并存入mysql数据库中 1.分析需求 2.创建表 3.分析需要爬取的网页内容 4.python里面selenium进行爬虫操作 1.添加包 2.连接 ...

  3. python爬取微博热搜并存入表格_python爬虫进阶之爬取微博热搜存入Mysql

    在编程中,我们如果想要把数据转入数据库中,首先会选择 MySQL数据库.因为MySQL数据库体积小.速度快.总体拥有成本低.开放源代码,其有着广泛的应用,例如我们使用python爬虫微博热搜,就可以使 ...

  4. python,selenium爬取微博热搜存入Mysql

    python爬取微博热搜存入Mysql 最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站li ...

  5. python爬取微博热搜写入数据库_python实现爬取微博热搜存入Mysql

    python爬取微博热搜存入Mysql最终的效果 使用的库 目标分析 一:得到数据 二:链接数据库 总代码 最终的效果 废话不多少,直接上图 这里可以清楚的看到,数据库里包含了日期,内容,和网站lin ...

  6. python实现爬虫探探_全栈 - 9 实战 爬取豆瓣电影数据

    这是全栈数据工程师养成攻略系列教程的第九期:9 实战 爬取豆瓣电影数据. 掌握了爬虫的基本原理和代码实现,现在让我们通过实战项目巩固一下. 确定目标 在写爬虫之前应当想清楚:我需要哪方面的数据?需要包 ...

  7. python写一个服务_写一个Python的windows服务

    1. 安装pywin32和pyinstaller pip install pywin32 pip install pyinstaller 2.写一个服务Demo # -*- coding: utf-8 ...

  8. qt xml组包_Qt 利用XML文档,写一个程序集合 二

    XML文档的读写 一个根节点,下面每一个子节点代表一个子程序,内容为子程序名字,图标路径,exe路径 /* * 读取XML配置文档 */ static int count_flag = 0; void ...

  9. python监控某个程序_写一个python的服务监控程序

    写一个python的服务监控程序 前言: Redhat下安装Python2.7 rhel6.4自带的是2.6, 发现有的机器是python2.4. 到python网站下载源代码,解压到Redhat上, ...

最新文章

  1. Fork 一个仓库并同步
  2. 理想的计算机职业作文100,我的理想作文100字(通用30篇)
  3. Linux一键安装PHP/JAVA环境OneinStack
  4. 索泰显卡超频软件测试要多少时间,索泰显卡专用超频软件_FireStorm显卡超频 V2.0.1 官方版...
  5. 美团技术:交易平台建设实践(视频+胶片)
  6. 基于Doxygen的C/C++注释原则
  7. 前台性能和服务器性能是什么,前端性能优化指南[2]--什么是Web性能?
  8. ASP.NET中常用功能代码总结(1)——发送邮件篇
  9. RDD Persistence持久化
  10. 100套大数据可视化模板
  11. 11部委印发《智能汽车创新发展战略》,加快智能汽车应用北斗高精度时空基准服务
  12. Java大数据秋招面试题
  13. 5G网络架构 — 接入网/传输网/核心网
  14. 直播带货开发,实现主播和用户连麦的方式
  15. 华为p4支持鸿蒙功能吗_只要华为鸿蒙系统能支持三个APP,我就愿意支持!
  16. QGC编译报错error C2220: 警告被视为错误 最佳解决方法
  17. 阿里员工调侃:花名考拉的妹子离职去了网易考拉,现在又回来了
  18. 黑马程序员--typedef关键字和结构体 枚举类型
  19. plsql免oracle客户端配置,PLSQL DEVELOPER 配置免安装ORACLE客户端
  20. Android 9 安卓P System-as-root

热门文章

  1. java被3整除_被3整除
  2. 视频质量评价——从裁判到教练
  3. 渣渣逆袭成为CTO,年纪轻轻步入某深圳公司董事
  4. POI中可能会用到一些需要设置EXCEL单元格格式的操作小结:
  5. LeetCode 495. 提莫攻击 解答
  6. Docker网段和内网网段冲突导致造成无法访问网络
  7. WEB3.0定义与未来发展趋势
  8. 支付宝接口程序、文档及解读
  9. ChatGPT+Midjourney,带你领略古诗词的魅力
  10. 聊下双胞胎的一些故事