Python简单爬虫入门三
我们继续研究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简单爬虫入门三的更多相关文章
- Python简单爬虫入门二
接着上一次爬虫我们继续研究BeautifulSoup Python简单爬虫入门一 上一次我们爬虫我们已经成功的爬下了网页的源代码,那么这一次我们将继续来写怎么抓去具体想要的元素 首先回顾以下我们Bea ...
- GJM : Python简单爬虫入门(二) [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
- Python简单爬虫入门一
为大家介绍一个简单的爬虫工具BeautifulSoup BeautifulSoup拥有强大的解析网页及查找元素的功能本次测试环境为python3.4(由于python2.7编码格式问题) 此工具在搜索 ...
- GJM : Python简单爬虫入门 (一) [转载]
版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 为大家介绍一个简单的爬虫工具BeautifulSoup BeautifulSoup拥有强大的解 ...
- 3.Python爬虫入门三之Urllib和Urllib2库的基本使用
1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器解释才呈现出来的,实质它是一段HTML代码,加 JS.CSS ...
- 转 Python爬虫入门三之Urllib库的基本使用
静觅 » Python爬虫入门三之Urllib库的基本使用 1.分分钟扒一个网页下来 怎样扒网页呢?其实就是根据URL来获取它的网页信息,虽然我们在浏览器中看到的是一幅幅优美的画面,但是其实是由浏览器 ...
- 爬虫入门三 scrapy
title: 爬虫入门三 scrapy date: 2020-03-14 14:49:00 categories: python tags: crawler scrapy框架入门 1 scrapy简介 ...
- python网络爬虫入门范例
python网络爬虫入门范例 Windows用户建议安装anaconda,因为有些套件难以安装. 安装使用pip install * 找出所有含有特定标签的HTML元素 找出含有特定CSS属性的元素 ...
- Python 简单爬虫案例
Python 简单爬虫案例 import requests url = "https://www.sogou.com/web" # 封装参数 wd = input('enter a ...
随机推荐
- Python的魔法函数之 - __len__,__getitem__,__setitem__,__delitem__
# 对象作为len()函数的参数是必须实现该方法 __len__ # 使用类似字典方式访问成员时必须实现 dic['pro_name'] __getitem__ # 使用类似字典方式设置成员时必须实现 ...
- JS原生第三篇 (帅哥)
1.1 数 组 1. 数组 看电影 电影院 座位 大的变量 里面可以放很多的值 var arr = [1,3,57]; var ar = new Array(); ...
- IOC的理解
转载http://www.cnblogs.com/xdp-gacl/p/4249939.html 很不错的文章,虽说是java的,但是.net也通用,所以复制一分,拿来看看挺不错的. 1.1.IoC是 ...
- Android总结之Gzip/Zip压缩
前言: 做过Android网络开发的都知道,在网络传输中我们一般都会开启GZIP压缩,但是出于刨根问底的天性仅仅知道如何开启就不能满足俺的好奇心的,所以想着写个demo测试一下比较常用的两个数据压缩方 ...
- The .NET of Tomorrow
Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciting times lie ahead f ...
- 深入理解java中的ArrayList和LinkedList
杂谈最基本数据结构--"线性表": 表结构是一种最基本的数据结构,最常见的实现是数组,几乎在每个程序每一种开发语言中都提供了数组这个顺序存储的线性表结构实现. 什么是线性表? 由0 ...
- Angular2 小贴士 Name
Angular2 正式版已经发布了一个月了,我也是通过各种方式在进行验证是否可以满足我们的需求,今天我就发现了一个问题.现在我们来一起说明一下,这个可能不算是bug,而应该需要我们记住就可以了. 我们 ...
- Rafy 框架 - 幽灵插件(假删除)
Rafy 框架又添新成员:幽灵插件.本文将解释该插件的场景.使用方法.原理. 场景 在开发各类数据库应用系统时,往往需要在删除数据时不是真正地删除数据,而只是把数据标识为'已删除'状态.这些数 ...
- Both must set "document.domain" to the same value to allow access.
有两个域名指向我的网站,其中一个域名访问我的网站的话就可以看到日期控件 另一个域名访问我的网站不能看到日期控件, 在EF中使用日期控件,浏览器审查元素后看到,报这个错误“Both must set & ...
- Entity Framework 教程——EF体系结构
EF体系结构 下图是一张EF体系结构的全景图,让我们单独了解各个组件的用处. EDM (Entity Data Model): EDM由3个主要部分组成,概念模块(Conceptual Model), ...