python爬取豆瓣电影首页超链接
什么是爬虫?
我们可以把互联网比作一张大网,而爬虫(即网络爬虫)便是在网上爬行的蜘蛛。把网的节点比作一个个网页,爬虫爬到这就相当于访问了该页面,获取了其信息。可以把节点间的连线比作网页与网页之间的链接关系,这样蜘蛛通过一个节点后,可以顺着节点连线继续爬行到达下一个节点,即通过一个网页继续获取后续的网页,这样整个网的节点便可以被蜘蛛全部爬行到,网站的数据就可以被抓取下来了。
代码:
from urllib import request
from collections import deque
from pybloom_live import BloomFilter
from lxml import etree
import hashlib class crawel_bfs:
request_header={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'max-age=0',
'Connection': 'keep-alive',
'Cookie': 'bid=Kn9AT5duD7k; gr_user_id=32e433a7-19f0-4e17-80c4-56b58d7c0056; _vwo_uuid_v2=5985FEE132C29EC9C840D6C5EDD95323|67c2ccc8467fc02a9cce6928e86ea013; ll="118281"; __yadk_uid=I4Ki5RUaEWOUdpVIjJfRYo1MEuaW36hA; __utmv=30149280.16369; viewed="10483489_1115600_2230208_26857712_1569487_1623164_26708119_26677686"; __utma=30149280.965685249.1516632348.1528892392.1530880979.81; __utmc=30149280; __utmz=30149280.1530880979.81.57.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; __utmt=1; __utmb=30149280.1.10.1530880979; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1530880982%2C%22https%3A%2F%2Fwww.douban.com%2F%22%5D; _pk_ses.100001.4cf6=*; __utma=223695111.2038558801.1520348154.1528892435.1530880982.55; __utmb=223695111.0.10.1530880982; __utmc=223695111; __utmz=223695111.1530880982.55.51.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/; _pk_id.100001.4cf6=da4243a2a9e242f1.1520348154.54.1530881042.1528892472.',
'Host': 'movie.douban.com',
'Referer': 'https://www.douban.com/',
'Upgrade-Insecure-Requests': '',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
} cur_level=0
max_level=2 download_bf=BloomFilter(1024*1024,0.01) childque=deque()
nowque=deque() def __init__(self,url,file_md5name,file_urlname):
self.file_urlNameMd5_name=file_md5name
self.file_urlName_name=file_urlname
self.deal_file_md5=open(self.file_urlNameMd5_name,'r')
self.file_md5=self.deal_file_md5.readlines()
#用于输入现有的文件
for url_md5_name in self.file_md5:
#-1表示的是换行符,读入时换行符不会占据两个字符
self.download_bf.add(url_md5_name[:-1])
self.deal_file_md5.close()
self.file_md5=open(self.file_urlNameMd5_name,'a')
self.file_url=open(self.file_urlName_name,'a')
self.nowque.append(url) def indeque(self,url):
self.nowque.append(url) def outdeque(self):
try:
url=self.nowque.popleft()
return url
except Exception:
self.cur_level+=1
if self.cur_level==self.max_level:
return None
if len(self.childque)==0:
return None
self.nowque=self.childque
self.childque=deque()
return self.nowque.popleft() def crawler(self,url):
try:
#创建一个request对象,封装一个报文对象
req=request.Request(url,headers=self.request_header)
#发送报文
response=request.urlopen(req)
html_page=response.read()
#按照固定编码解码
html=etree.HTML(html_page.lower().decode('utf-8'))
url_list=html.xpath('//a/@href')
for url in url_list:
if url.find('javascript:')!=-1:
continue
if url.startswith('http://') is False:
if url.startswith('/') is True:
url='http://movie.douban.com'+url
else:
continue
if url[-1]=='/':
url=url[:-1]
temp=hashlib.md5(url.encode('utf-8')).hexdigest()
if temp not in self.download_bf:
self.download_bf.add(url)
self.childque.append(url)
self.file_md5.write(temp+'\n')
self.file_url.write(url+'\n')
except Exception:
print("出现异常") def startcrawler(self):
while True:
url=self.outdeque()
if url!=None:
print("现在爬取"+url+"的超链接")
self.crawler(url)
else:
break
self.file_md5.close()
self.file_url.close() crawel=crawel_bfs("https://movie.douban.com/",'urlmd5.txt',
'urlname.txt')
crawel.startcrawler()
python爬取豆瓣电影首页超链接的更多相关文章
- python爬取豆瓣电影信息数据
题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...
- 利用Python爬取豆瓣电影
目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com ...
- Python爬取豆瓣电影top
Python爬取豆瓣电影top250 下面以四种方法去解析数据,前面三种以插件库来解析,第四种以正则表达式去解析. xpath pyquery beaufifulsoup re 爬取信息:名称 评分 ...
- python 爬取豆瓣电影评论,并进行词云展示及出现的问题解决办法
本文旨在提供爬取豆瓣电影<我不是药神>评论和词云展示的代码样例 1.分析URL 2.爬取前10页评论 3.进行词云展示 1.分析URL 我不是药神 短评 第一页url https://mo ...
- python 爬取豆瓣电影短评并wordcloud生成词云图
最近学到数据可视化到了词云图,正好学到爬虫,各种爬网站 [实验名称] 爬取豆瓣电影<千与千寻>的评论并生成词云 1. 利用爬虫获得电影评论的文本数据 2. 处理文本数据生成词云图 第一步, ...
- 零基础爬虫----python爬取豆瓣电影top250的信息(转)
今天利用xpath写了一个小爬虫,比较适合一些爬虫新手来学习.话不多说,开始今天的正题,我会利用一个案例来介绍下xpath如何对网页进行解析的,以及如何对信息进行提取的. python环境:pytho ...
- python爬取豆瓣电影Top250(附完整源代码)
初学爬虫,学习一下三方库的使用以及简单静态网页的分析.就跟着视频写了一个爬取豆瓣Top250排行榜的爬虫. 网页分析 我个人感觉写爬虫最重要的就是分析网页,找到网页的规律,找到自己需要内容所在的地方, ...
- Python 爬取豆瓣电影Top250排行榜,爬虫初试
from bs4 import BeautifulSoup import openpyxl import re import urllib.request import urllib.error # ...
- 《团队-Python 爬取豆瓣电影top250-成员简介及分工》
杨继尧,没有什么擅长的,会一点python,一点c#,爬取利用数据库,有些用法不太会,但是会在实现项目中查资料.
随机推荐
- MVC的View本质和扩展
一:网站启动流程简介 前面两节我们有介绍管道处理模型,然后下图总结出了mvc启动的整个流程 二:MVC返回的三种结果 从之前的流程已经反编译源码我们晓的,mvc最终都会返回一个结果,其中大概分为以下三 ...
- [Go] golang的用途和windows搭建环境
Golang核心编程: 区块链研发工程师(分布式账本技术,互联网数据库技术,特点是去中心化) Go服务器端/游戏软件工程师(现在主流是C C++,处理日志,数据打包,文件处理,美团后台流量支撑,处理大 ...
- mysql主从配置步骤
主服务器配置: 1)登陆MySQL数据库 mysql>mysql -uroot -p123 2)给从服务器设置授权用户 mysql>grant all slave on *.* to us ...
- SQLAlchemy(1)
介绍 SQLAlchemy是一个基于Python实现的ORM框架.该框架建立在 DB API之上,使用关系对象映射进行数据库操作,简言之便是:将类和对象转换成SQL,然后使用数据API执行SQL并获取 ...
- 201871010124-王生涛《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- 桌面图标管理工具-Rolan(网上收集,仅供学习与研究,支持正版)
Rolan 是一个轻量级启动器,“你可以通过将文件拖到软件窗口中,然后通过像 QQ 一样的吸附或者键盘热键随时呼出,点击图标即可启动,使用起来非常方便快捷! 官网:https://getrolan.c ...
- 柯里化currying + 隐式调用 = 一个有名的add面试题
柯里化 =================================== 维基百科解释: 柯里化,英语:Currying(果然是满满的英译中的既视感),是把接受多个参数的函数变换成接受一个单一参 ...
- Codeforces Round #607 (Div. 1) Solution
从这里开始 比赛目录 我又不太会 div 1 A? 我菜爆了... Problem A Cut and Paste 暴力模拟一下. Code #include <bits/stdc++.h> ...
- idea之导入Eclipse Maven项目
Idea之导入Eclipse Maven项目:https://blog.csdn.net/qq_33442160/article/details/81876428参考上述链接即可,这里不再赘述.
- C# HTTP系列3 HttpWebRequest.ContentType属性
系列目录 [已更新最新开发文章,点击查看详细] 获取或设置请求的 Content-type HTTP 标头的值.默认值为null. 常见的请求内容类型为以下几种: /// <summar ...