一.爬虫项目一:
豆瓣图书网站图书的爬取: 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. Java的发送邮件

    以下内容引用自http://wiki.jikexueyuan.com/project/java/sending-email.html: 用Java应用程序来发送一封电子邮件是足够简单的,但是开始时应该 ...

  2. html页面中拍照和上传照片那些事儿(一)

    本文为原创,转载请注明出处: cnzt  文章:cnzt-p http://www.cnblogs.com/zt-blog/p/6709037.html  一. 思路: <input type= ...

  3. Excel小tips - 如何实现多列成绩统一排名

    本文参考:http://mp.weixin.qq.com/s/XR49hyG9Cods7rOcsM-tRg 如果有以下数据文件,需要进行成绩排名. 第一步:先在成绩列后边添加一列,用来显示名次.如下: ...

  4. cef3的各个接口你知道几个

    CEF3基本的框架包含C/C++程 序接口,通过本地库的接口来实现,而这个库则会隔离宿主程序和 Chromium&Webkit的操作细节.它在浏览器控件和宿主程序之间提供紧密的整合,它支持用户 ...

  5. 【APUE】进程间通信之FIFO

    FIFO也称为有名管道,它是一种文件类型,是半双工的.FIFO简单理解,就是它能把两个不相关的进程联系起来,FIFO就像一个公共通道,解决了不同进程之间的“代沟”.普通的无名管道只能让相关的进程进行沟 ...

  6. Python 基础语法(和Java相比)

    Python变量和数据类型 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 ...

  7. PAT-PAT (Advanced Level) Practise 1001. A+B Format (20) 【二星级】

    题目链接:http://www.patest.cn/contests/pat-a-practise/1001 题面: 1001. A+B Format (20) Calculate a + b and ...

  8. 【Mongodb教程 第十四课 】MongoDB 投影

    mongodb 投影意思是只选择必要的数据而不是选择一个文件的数据的整个.如果一个文档有5个字段,需要显示只有3个,然后选择其中只有3个字段. find() 方法 MongoDB 的find()方法, ...

  9. Apach POI 如何拿到有公式的单元格,计算结果

    public static void getFormulaCellValue(){ FileInputStream fis = new FileInputStream("c:/temp/te ...

  10. C++语言笔记系列之二十——模版

    1.随意输入两个数x和y,输出最大值max. int max(int x, int y) {return x>y? x:y;} 2.函数模版 (1)用一种或者多种通用类型去表示函数--函数模版. ...