我们继续研究BeautifulSoup分类打印输出

Python简单爬虫入门一

Python简单爬虫入门二

前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信息,

等于我们已经只知道如何用工具去浏览和检索内容,但是实现只有你知道抓取的是什么,这时候

我们需要整理分类,给他们命名以及分类这样打印出来别人一看就知道标题是什么,内容是什么

#!usr/bin/env python
# -*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests
import json headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
# 'Cookie':'CNZZDATA1260535040=242528197-1478672438-null%7C1478672438',
}
url= 'http://www.beiwo.tv/index.php?s=vod-search-id-14-tid--area--year-$search_year-order-gold.html' wb_data = requests.get(url,headers=headers)
soup = BeautifulSoup(wb_data.text,'lxml')
imgs = soup.select(" ul.img-list.clearfix > li > a > img ")
titles = soup.select(" ul.img-list.clearfix > li > h5 ")
yanyuans = soup.select(" ul.img-list.clearfix > li > p")
stars = soup.select(" p.star > em") J_data = {}
count = 0
for title,img,yanyuan,star in zip(titles,imgs,yanyuans,stars):
data = {
"title":title.get_text(),
"img":img.get("src"),
"演员":list(yanyuan.stripped_strings),
"评分":star.get_text(),
}
J_data[count] = data
count += 1
print(data) with open("test.txt",'w') as f:
f.write(json.dumps(J_data))

我就直接把完整代码发出来一点点来说:

首先还是标准格式导入相应方法这里我多加了json用来保存抓去的数据,就用来放入txt文件内

headers伪装浏览器头文件简写方式,url是你抓去网页的地址(现在很多网站都有反爬保护越来越难爬取信息)

requests请求网页服务返回的数据wb_data给BeautifulSoup去解析用lxml格式

抓去的信息如下titles标题imgs图片yanyuans演员stars评分都加了s是因为返回的是抓去的每项全部相关信息以列表返回

J_data字典后面保存时的格式,count用来计数顺便用来当字典的Key键值,zip的方法我简单介绍如下:

可以把两个列表同一位置的值一一对应以元组返回行成新列表的方法在这里我是用他来分类输出我们抓去相应信息

最后用了常用的写入方法with可以不用写文件close关闭,处理完它会收拾后面操作,来看效果如下:

这里我们整理所有想要的数据及分类,这样打印出来相信给其它人看也知道是什么,由于评分与演员放在一个标签下所以没有演员名时会有点BUG

在来看看txt文档内保存了什么如下:

很多人说报错乱码什么的,其实\u6f14就是中文只是用unicode的编码的格式写入文本如果你在反向读取还是可以正常打印出来的(由于文件太长没法截取)

我们就在新建一个py文件简单教一下如何读取文件内容代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*- import json with open('test.txt','r') as f:
dic = json.loads(f.readline()) for i in range(len(dic)):
print(dic[str(i)])

导入json的方法模块

打开文件test.txt模式r读取并且命名f (上面生成的test.txt目录是当前目录,也就是3个文件是放在一起的,如果要写在其它地方请写相对路径)

由于只有一行所以f.readline()读取刚才大家看到unicode编码的文件以json.load的方式读取,你是以json.dumps写入所以读取相应,返回的类型字典dic

用一个循环来通过字典的key来看到value就是刚才的内容效果如下:

目前已经把基本的BeautifulSoup的基础用法方法讲完了,其实还可以做很多扩展比如把抓去的数据存入mysql或其它数据库等,写入xls表格,由于我这里主要介绍BeautifulSoup,没有介绍到,但是可以做就当扩展练习吧

大家可以去学习数据库的基本用法和语句在结合这个爬去存放,也可以学习python表格的第三方模块把数据写入excel内这样也可以显得更加专业。最后还是提醒只有多练习才能熟练运用这些工具,并且发现问题,

思考,解决与提高。最后也感谢能观看到此的同学和朋友们,我也会随后时不时更新讲解更好用的库与方法。

Python简单爬虫入门三的更多相关文章

  1. Python简单爬虫入门二

    接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...

  2. GJM : Python简单爬虫入门(二) [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

  3. Python简单爬虫入门一

    为大家介绍一个简单的爬虫工具BeautifulSoup BeautifulSoup拥有强大的解析网页及查找元素的功能本次测试环境为python3.4(由于python2.7编码格式问题) 此工具在搜索 ...

  4. GJM : Python简单爬虫入门 (一) [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 为大家介绍一个简单的爬虫工具BeautifulSoup BeautifulSoup拥有强大的解 ...

  5. 3.Python爬虫入门三之Urllib和Urllib2库的基本使用

    1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...

  6. 转 Python爬虫入门三之Urllib库的基本使用

    静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...

  7. 爬虫入门三 scrapy

    title: 爬虫入门三 scrapy date: 2020-03-14 14:49:00 categories: python tags: crawler scrapy框架入门 1 scrapy简介 ...

  8. python网络爬虫入门范例

    python网络爬虫入门范例 Windows用户建议安装anaconda,因为有些套件难以安装. 安装使用pip install * 找出所有含有特定标签的HTML元素 找出含有特定CSS属性的元素 ...

  9. Python 简单爬虫案例

    Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a ...

随机推荐

  1. Java-jdbc操作数据库

    如果需要访问数据库,首先要加载数据库驱动,数据库驱动只需在第一次访问数据库时加载一次.然后在每次访问数据库时创建一个Connection实例,获取数据连接,这样就可以执行操作数据库的SQL语句.最后在 ...

  2. 单例模式——创建型模式01

    1. 名称     单例模式(Singleton Pattern):确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类.单例模式是一种对象创建型模式. 2. 问题    ...

  3. ASP.NET 访问共享文件夹

    配置代码: var dataProtection = new Microsoft.AspNet.DataProtection.DataProtectionProvider(new DirectoryI ...

  4. 由objC运行时所想到的。。。

    objC语言不仅仅有着面向对象的特点(封装,继承和多态),也拥有类似脚本语言的灵活(运行时),这让objC有着很多奇特的功能-可在运行时添加给类或对象添加方法,甚至可以添加类方法,甚至可以动态创建类. ...

  5. SQL Tuning 基础概述07 - SQL Joins

    N多年之前,刚刚接触SQL的时候,就被多表查询中的各种内连接,外连接,左外连接,右外连接等各式各样的连接弄的晕头转向. 更坑的是书上看到的各种表连接还有两种不同的写法, 比如对于表A,表B的查询 1, ...

  6. 完美解决,浏览器下拉显示网址问题 | 完美解决,使用原生 scroll 写下拉刷新

    在 web 开发过程中我们经常遇到,不想让用户下拉看到我的地址,也有时候在 div 中没有惯性滚动,就此也出了 iScroll 这种关于滚动条的框架,但是就为了一个体验去使用一个框架好像又不值得,今天 ...

  7. 在CentOS或RHEL上安装Nux Dextop仓库

    介绍 Nux Dextop是类似CentOS.RHEL.ScientificLinux的第三方RPM仓库(比如:Ardour,Shutter等等).目前,Nux Dextop对CentOS/RHEL ...

  8. mongo DB for C#

    (1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...

  9. MongoDB初识

    参考: MongoDB资料汇总专题:

  10. php中实现的一个curl批处理的实例

    curl是利用URL语法在命令行方式下工作的开源文件传输工具 本文在php中实现了的一个curl批处理的实例. 代码如下: header("Content-Type:text/html;ch ...