磕磕绊绊学python一个月,这次到正则表达式终于能写点有趣的东西,在此作个记录:

—————————————————————————————————————————————————

1.爬取豆瓣电影榜前250名单

运行环境:

pycharm-professional-2018.2.4

3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]

成品效果:

相关代码:

 from urllib.request import urlopen
import re
# import ssl # 若有数字签名问题可用
# ssl._create_default_https_context = ssl._create_unverified_context # 写正则规则
obj = re.compile(r'<div class="item">.*?<span class="title">(?P<name>.*?)</span>.*?导演:(?P<daoyan>.*?)&nbsp;.*?'
r'主演:(?P<zhuyan>.*?)<br>\n (?P<shijian>.*?)&nbsp;/&nbsp;(?P<diqu>.*?)&nbsp;'
r'/&nbsp;(?P<leixing>.*?)\n.*?<span class="rating_num" property="v:average">(?P<fen>.*?)</span>.*?<span>'
r'(?P<renshu>.*?)评价</span>.*?<span class="inq">(?P<jianping>.*?)</span>',re.S) # re.S 干掉换行 # 转码 获取内容
def getContent(url):
content = urlopen(url).read().decode("utf-8")
return content # 匹配页面内容 返回一个迭代器
def parseContent(content):
iiter = obj.finditer(content)
for el in iiter:
yield {
"name":el.group("name"),
"daoyan":el.group("daoyan"),
"zhuyan":el.group("zhuyan"),
"shijian":el.group("shijian"),
"diqu":el.group("diqu"),
"leixing":el.group("leixing"),
"fen":el.group("fen"),
"renshu":el.group("renshu"),
"jianping":el.group("jianping")
} for i in range(10):
url = "https://movie.douban.com/top250?start=%s&filter=" % (i*25) # 循环页面10
print(url)
g = parseContent(getContent(url)) # 匹配获取的内容返回给g
f = open("douban_movie.txt",mode="a",encoding="utf-8")
for el in g:
f.write(str(el)+"\n") # 写入到txt 注意加上换行 # f.write("==============================================") # 测试分页
f.close()

2.爬取某站最新电影和下载地址

运行环境:

pycharm-professional-2018.2.4

3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)]

成品效果:

相关代码:

 from urllib.request import urlopen
import json
import re # 获取主页面内容
url = "https://www.dytt8.net/"
content = urlopen(url).read().decode("gbk")
# print(content) # 正则
obj = re.compile(r'.*?最新电影下载</a>]<a href=\'(?P<url1>.*?)\'>', re.S)
obj1 = re.compile(r'.*?<div id="Zoom">.*?<br />◎片  名(?P<name>.*?)<br />.*?bgcolor="#fdfddf"><a href="(?P<download>.*?)">', re.S) def get_content(content):
res = obj.finditer(content)
f = open('movie_dytt.json', mode='w', encoding='utf-8')
for el in res:
res = el.group("url1")
res = url + res # 拼接子页面网址 content1 = urlopen(res).read().decode("gbk") # 获取子页面内容
lst = obj1.findall(content1) # 匹配obj1返回一个列表
# print(lst) # 元组
name = lst[0][0]
download = lst[0][1]
s = json.dumps({"name":name,"download":download},ensure_ascii=False)
f.write(s+"\n")
f.flush()
f.close() get_content(content) # 调用函数 执行

记一次简单爬虫(豆瓣/dytt)的更多相关文章

  1. 放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~)

    放养的小爬虫--豆瓣电影入门级爬虫(mongodb使用教程~) 笔者声明:只用于学习交流,不用于其他途径.源代码已上传github.githu地址:https://github.com/Erma-Wa ...

  2. Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)

    一:抓取简单的页面: 用Python来做爬虫抓取网站这个功能很强大,今天试着抓取了一下百度的首页,很成功,来看一下步骤吧 首先需要准备工具: 1.python:自己比较喜欢用新的东西,所以用的是Pyt ...

  3. python 简单爬虫(beatifulsoup)

    ---恢复内容开始--- python爬虫学习从0开始 第一次学习了python语法,迫不及待的来开始python的项目.首先接触了爬虫,是一个简单爬虫.个人感觉python非常简洁,相比起java或 ...

  4. Python 简单爬虫案例

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

  5. Python简单爬虫入门三

    我们继续研究BeautifulSoup分类打印输出 Python简单爬虫入门一 Python简单爬虫入门二 前两部主要讲述我们如何用BeautifulSoup怎去抓取网页信息以及获取相应的图片标题等信 ...

  6. [Java]使用HttpClient实现一个简单爬虫,抓取煎蛋妹子图

    第一篇文章,就从一个简单爬虫开始吧. 这只虫子的功能很简单,抓取到”煎蛋网xxoo”网页(http://jandan.net/ooxx/page-1537),解析出其中的妹子图,保存至本地. 先放结果 ...

  7. 简单爬虫,突破IP访问限制和复杂验证码,小总结

    简单爬虫,突破复杂验证码和IP访问限制 文章地址:http://www.cnblogs.com/likeli/p/4730709.html   好吧,看题目就知道我是要写一个爬虫,这个爬虫的目标网站有 ...

  8. Python简单爬虫入门二

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

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

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

随机推荐

  1. python里面如何拷贝一个对象?deepcopy 和 copy 有什么区别 ?

    深拷贝就是说原内容改变但是拷贝的性内容不会改变,copy.copy和deepcopy对一个不可变类型进行拷贝, name结果相同都是浅拷贝指向引用如果是可变的话, 即使元组在最外层, 那么deepco ...

  2. (原创)JAVA阻塞队列LinkedBlockingQueue 以及非阻塞队列ConcurrentLinkedQueue 的区别

    阻塞队列:线程安全 按 FIFO(先进先出)排序元素.队列的头部 是在队列中时间最长的元素.队列的尾部 是在队列中时间最短的元素.新元素插入到队列的尾部,并且队列检索操作会获得位于队列头部的元素.链接 ...

  3. php7 改为从栈上分配内在的思路

    php7的特点是规则上不从堆上分配内存,改为从栈上分配内存, 因为有些场景是从堆上分配内在后,还要手动释放内存,利用栈分配内在快的特点,在有需要的时候,再在堆上分配内在 但是栈上分配的内存,不能返回, ...

  4. Supporting Right-to-Left Languages

    For the most part iOS supports Right-to-Left (RTL) languages such as Arabic with minimal developer e ...

  5. zookeeper知识点学习

    单机模式配置: Zookeeper 的启动脚本在 bin 目录下,Linux 下的启动脚本是 zkServer.sh 在你执行启动脚本之前,还有几个基本的配置项需要配置一 下,Zookeeper 的配 ...

  6. 记一次Socket编程踩的坑

    闲来无事研究了下Socket,想用它做个简单的聊天室模型,结果踩了个坑,整半天才出来,惭愧啊,先上完成的代码吧 服务端: public partial class Form1 : Form { pub ...

  7. 使用SharedPreference保存用户数据的步骤

    1. 声明 SharedPreferences sp; 2. 初始化 sp = this.getSharedPreferences("文件名", 0);//0代表的是私有 3. 获 ...

  8. python如何帮我在投资中获取更高收益

    搞技术的大都比较纯粹,比较实在,除了工资之外基本就没有别的收入了(少部分人能接外包赚外块).或许是迫于生活的压力,或许是不甘于固定的工资,或许是出于技术人骨子里的好奇,亦或是这几年关于理财投资的大力宣 ...

  9. android学习-LocationManager(一)-

    Location Provider是不同位置信息来源的抽象 Location封装了从位置提供者提供给应用的位置数据(经纬度) Criteria提供了查询获取包含特定特征的位置提供者(accuracy精 ...

  10. Python函数中的可变参数

    在Python函数中,还可以定义可变参数. 如:给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……. 要定义出这个函数,我们必须确定输入的参数.由于参数个数不确定,我们首先想到可以把 ...