一.爬虫项目一:
豆瓣图书网站图书的爬取: import requests
import re
content = requests.get("https://book.douban.com/").text
#注:此时我们打印输出结果,可以看到输出我们的网页字符串:
# print(content)
#然后我们编辑匹配豆瓣图书网站抓取图书所用到的正则表达式。
pattern = re.compile(r'<li.*?class="cover".*?href="(.*?)".title.*?class="info".*?class="more-meta".*?class="title">(.*?)</h4>.*?class="author">(.*?)</span>.*?class="year">(.*?)</span>.*?class="publisher">(.*?)</span>.*?</li>',re.S)
#注意,经过测试,我们可以使用.代表空格,然后匹配的元组(.*?)后面最好不要再加.*?,要不然这样容易报错,
#容易匹配不出结果。
results = re.findall(pattern,content)
#然后我们通过re.findall函数就可以匹配出我们想要的结果了。
print(results)
#注,经过测试,我们发现,通过re.findall返回的结果也就是我们获取的结果是一个列表,而每一个列表
#里面的数据都是一个元组,此时我们就可以先通过循环便利的方式先获取到列表里面的个每个元组
for result in results:
print(result)
#注,通过循环遍历的方式,我们就可以获取到列表里面的每个元组,从打印出来的每个元组的信息来看,每个元组
#都有五个元素,他们分别是url,name,author,date,publisher
获取元组里面的数据,我们可以通过位置符号来指定:
如,result[0],result[1],result[2],result[3],result[4],我们也可以直接打印输出:
如:print(result[0],result[1],result[2],result[3],result[4]) 我们也可以通过一一对应的方式,将元组中的各个元素分别赋值给每个变量:
如下所示:
url,name,author,date,publisher = result
然后打印输出:
print(url,name,author,date,publisher) #但是经过测试我们可以发现,其实每个元组里面的值后面都带了一个换行符,导致元组里面的数据取出来的时候
#不是在一行里面显示的,此时我们可以将这些换行符去掉,这里我们有两种方式,可以实现目的:
第一种方式:
#使用strip()的方法,去除字符串周围的空格元素,即可得到我们想要的结果
url = url.strip()
name = name.strip()
author = author.strip()
date = date.strip()
publisher = publisher.strip()
#此时打印输出,就可以得到我们想要的值。
print(url,name,author,date,publisher)
第二种方式:使用re.sub的方法:
#用空字符串来替换我们字符串中的换行符,此时我们用\s来代表换行符,用一个空字符串来替代他,格式如下:
url = re.sub('\s', "", url)
name = re.sub('\s', "", name)
author = re.sub('\s', "", author)
date = re.sub('\s', "", date)
publisher = re.sub('\s', "", publisher)
#此时打印输出,也可以得到我们想要的值。
print(url,name,author,date,publisher)

python网络爬虫之四简单爬取豆瓣图书项目的更多相关文章

  1. Python 网络爬虫 002 (入门) 爬取一个网站之前,要了解的知识

    网站站点的背景调研 1. 检查 robots.txt 网站都会定义robots.txt 文件,这个文件就是给 网络爬虫 来了解爬取该网站时存在哪些限制.当然了,这个限制仅仅只是一个建议,你可以遵守,也 ...

  2. Python网络爬虫与如何爬取段子的项目实例

    一.网络爬虫 Python爬虫开发工程师,从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页 ...

  3. 爬虫实战_爬取豆瓣图书利用csv库存储

    读取csv文件 通过csv.reader()和DictReader()两个函数 reader()函数返回一个迭代器 会包含表头 通过next函数可以跳过,但是它只能通过下标访问数据: DictRead ...

  4. 【Python网络爬虫三】 爬取网页新闻

    学弟又一个自然语言处理的项目,需要在网上爬一些文章,然后进行分词,刚好牛客这周的是从一个html中找到正文,就实践了一下.写了一个爬门户网站新闻的程序 需求: 从门户网站爬取新闻,将新闻标题,作者,时 ...

  5. 精通python网络爬虫之自动爬取网页的爬虫 代码记录

    items的编写 # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentati ...

  6. Python 网络爬虫实战:爬取 B站《全职高手》20万条评论数据

    本周我们的目标是:B站(哔哩哔哩弹幕网 https://www.bilibili.com )视频评论数据. 我们都知道,B站有很多号称“镇站之宝”的视频,拥有着数量极其恐怖的评论和弹幕.所以这次我们的 ...

  7. python系列之(3)爬取豆瓣图书数据

    上次介绍了beautifulsoup的使用,那就来进行运用下吧.本篇将主要介绍通过爬取豆瓣图书的信息,存储到sqlite数据库进行分析. 1.sqlite SQLite是一个进程内的库,实现了自给自足 ...

  8. Python 2.7_利用xpath语法爬取豆瓣图书top250信息_20170129

    大年初二,忙完家里一些事,顺带有人交流爬取豆瓣图书top250 1.构造urls列表 urls=['https://book.douban.com/top250?start={}'.format(st ...

  9. requests+正则爬取豆瓣图书

    #requests+正则爬取豆瓣图书 import requests import re def get_html(url): headers = {'User-Agent':'Mozilla/5.0 ...

随机推荐

  1. 学习swift从青铜到王者之swift枚举07

    空枚举 //空枚举 enum SomeEnumeration { // enumeration definition goes here } 枚举基本类型 //枚举基本类型 enum CompassP ...

  2. 【Todo】秒杀系统 & 乐观锁 & Nginx反向代理

    http://www.csdn.net/article/2014-11-28/2822858 1. 单点帐号验证,不用读,而是用写入,Redis,看是否加watch 2. 抢宝的最终购买冲突.包装称“ ...

  3. Could not find leader nimbus

    运行storm ui, 然后访问storm ui 的网页的时候,死活跑不起来.后面,根据下面这篇文章的说法, 停止zookeeper 之后,删掉zookeeper 上面的storm 节点, 然后再重启 ...

  4. 常见Python运行时错误

    1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加 :(导致 “SyntaxError :invalid syntax”) 该错误将发生在 ...

  5. Effective C++ Item 27 少做转型操作

    本文为senlie原创,转载请保留此地址:http://blog.csdn.net/zhengsenlie todo Item34 旧式转型 (T) expression 或 T (expressio ...

  6. random模块的使用

    random模块用于生成随机数 import random print random.random() #用于生成小于1大于0的数 print random.randint(1,5) #生成大于等于1 ...

  7. 【翻译自mos文章】oracle db 中的用户账户被锁--查看oracle用户的尝试次数

    參考原文: Users Accounts Getting Locked. (Doc ID 791037.1) 事实上这个文章是为oracle 别的软件产品写的,只是涉及到user 锁定问题.那还是跟d ...

  8. 19-6/24作业: 将一个double类型的小数,按照四舍五入保留两位小数

    ☞要求 将一个double类型的小数,按照四舍五入保留两位小数 ☞实现方式 1.获得一个double类型的小数 2.使用BigDecimal包的setScale进行操作 3.输出结果 ☞代码内容 pa ...

  9. EF Code-First 学习之旅 数据库初始化 (二)

    Context类的基类构造函数有如下的参数 1.无参数 如果没有给基类构造函数添加参数,它会在local SQLEXPRESS server创建数据库,名为{Namespace}.{Context c ...

  10. Response.ContentLength获取文件大小

    Response.ContentLength返回的是请求内容的大小,而不是请求文件的大小,当我们用Http断点续传的时候,比如文件大小为100M,第一次下载的时候ContentLength的大小就是1 ...