一个很简单的爬虫。

从这里学习的,解释的挺好的:https://xlzd.me/2015/12/16/python-crawler-03

分享写这个代码用到了的学习的链接:

BeautifulSoup官方文档

requests文档

codecs

with……as……的解释

.join函数

.format函数

其他的一些东西在代码里面有详细注释。

 # encoding = utf-8
import codecs
import requests
from bs4 import BeautifulSoup # 爬取豆瓣电影TOP250 DOWNLOADURL = 'https://movie.douban.com/top250' def download_page(url): # 向服务器发送请求下载得到html
headers = {'User-Agent': 'Mozilla/4.0(compatibel; MSIE 5.5; Windows NT)'} # 伪装成浏览器
data = requests.get(url, headers=headers).content
return data # 返回得到的html代码 def parse_html(html): # 解析网页
soup = BeautifulSoup(html, 'lxml') # 创建一个BeautifulSoup对象
movie_list_soup = soup.find('ol', attrs={'class': 'grid_view'}) # 定位 name_list = []
for movie_li in movie_list_soup.find_all('li'): # 找到电影名字
detail = movie_li.find('div', attrs={'class', 'hd'})
movie_name = detail.find('span', attrs={'class', 'title'}).getText()
name_list.append(movie_name) # 放到一个list里面 have_next = soup.find('span', attrs={'class': 'next'}).find('a') # 找下一页的链接
if have_next: # 如果有下一页的链接不为空
return name_list, DOWNLOADURL + have_next['href'] # 返回名字列表还有下一页的URL
else:
return name_list, None # 找不到返回None def main():
url = DOWNLOADURL
# with xxx.open as f 打开xxx之后finally关闭xxx
# codecs方便处理中文编码
with codecs.open('douban_movies', 'wb', encoding='utf-8') as fp:
while url:
html = download_page(url)
name_list, url = parse_html(html)
#'\n'.join(name_list) : 以'\n'为分隔符将name_list所有元素合并成一个新的字符串
#'{movies}'.format(movies='xxxxx') : 即movies = 'xxxxx',将xxxxx按照格式输出
fp.write(u'{movies}\n'.format(movies='\n'.join(name_list))) if __name__ == '__main__':
main()

Python爬虫入门:爬取豆瓣电影TOP250的更多相关文章

  1. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python requests的使用. 1.准备工作 在pycharm中安装request库 ...

  2. python 爬虫&爬取豆瓣电影top250

    爬取豆瓣电影top250from urllib.request import * #导入所有的request,urllib相当于一个文件夹,用到它里面的方法requestfrom lxml impor ...

  3. scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250

    scrapy爬虫框架教程(二)-- 爬取豆瓣电影TOP250 前言 经过上一篇教程我们已经大致了解了Scrapy的基本情况,并写了一个简单的小demo.这次我会以爬取豆瓣电影TOP250为例进一步为大 ...

  4. Scrapy中用xpath/css爬取豆瓣电影Top250:解决403HTTP status code is not handled or not allowed

    好吧,我又开始折腾豆瓣电影top250了,只是想试试各种方法,看看哪一种的方法效率是最好的,一直进行到这一步才知道 scrapy的强大,尤其是和selector结合之后,速度飞起.... 下面我就采用 ...

  5. urllib+BeautifulSoup无登录模式爬取豆瓣电影Top250

    对于简单的爬虫任务,尤其对于初学者,urllib+BeautifulSoup足以满足大部分的任务. 1.urllib是Python3自带的库,不需要安装,但是BeautifulSoup却是需要安装的. ...

  6. python2.7爬取豆瓣电影top250并写入到TXT,Excel,MySQL数据库

    python2.7爬取豆瓣电影top250并分别写入到TXT,Excel,MySQL数据库 1.任务 爬取豆瓣电影top250 以txt文件保存 以Excel文档保存 将数据录入数据库 2.分析 电影 ...

  7. 【转】爬取豆瓣电影top250提取电影分类进行数据分析

    一.爬取网页,获取需要内容 我们今天要爬取的是豆瓣电影top250页面如下所示: 我们需要的是里面的电影分类,通过查看源代码观察可以分析出我们需要的东西.直接进入主题吧! 知道我们需要的内容在哪里了, ...

  8. scrapy爬取豆瓣电影top250

    # -*- coding: utf-8 -*- # scrapy爬取豆瓣电影top250 import scrapy from douban.items import DoubanItem class ...

  9. 第一个nodejs爬虫:爬取豆瓣电影图片

    第一个nodejs爬虫:爬取豆瓣电影图片存入本地: 首先在命令行下 npm install request cheerio express -save; 代码: var http = require( ...

随机推荐

  1. 许多其他C++的class样本

    class A{  public:  A(){}//构造函数,作用分配类所需的空间 }; int main() {  A a; } a它是类A示例! 版权声明:本文博客原创文章.博客,未经同意,不得转 ...

  2. jquery表单过滤器

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  3. Qt中嵌入Directx11(有句柄就可以)

    最近要做个游戏场景编辑器,需要directx11配合gui框架使用,所以简单地弄了一个directx11嵌入到Qt窗体中的程序. 1 建立工程 建一个Qt的工程,配置好directx的包含目录和库目录 ...

  4. wget(1.11.4) for win

    下载wget(1.11.4) for win 安装 添加wget环境变量,这样使用就更方便了,右键计算机->属性->高级系统设置->高级->环境变量->选中PATH-&g ...

  5. jquery 鼠标经过延时触发事件,jquery插件

    jquery 鼠标经过延时触发事件. 用来做:鼠标经过选项卡,延时切换,鼠标经过商城分类延时显示,最好不过,防止用户随便滑动就切换了选项卡. 一.引入jq 二.加入以下插件代码 /* * 鼠标经过延时 ...

  6. Win10《芒果TV》春季商店版更新v3.3.0:全新视觉蜕变&支持快男直播

    在微软发布Win10创意者更新正式版前夕,Win10版<芒果TV>迅速更新至v3.3.0,主要是全新升级视觉交互,新增大咖快男个人直播,全面优化底层架构,启动大提速. Win10版< ...

  7. cn_sql_server_2012_enterprise_edition_x86_x64_dvd_813295 序列号

    cn_sql_server_2012_enterprise_edition_x86_x64_dvd_813295 序列号 MICROSOFT SQL SERVER 2012 ENTERPRISE CO ...

  8. winform窗体绑定监控键盘事件

    直接注册是触发不了的, 例如: 总是不能触发. 需要在窗体设置一直属性: 大概意思是在无论窗体的那个子元素获得焦点,都将触发监控键盘的事件.

  9. 使用Visual Studio开发Python

    Python优秀的集成开发环境有PyCharm,Visual Studio Code等,当然你仍然可以使用Visual Studio进行开发.如果你熟悉Visual Studio,使用Visual S ...

  10. 使用mingw 对libcURL,openSSL,zLib交叉编译

    使用mingw 对libcURL,openSSL,zLib交叉编译   将三个库解压到同一目录下 比如取目录名为 "source" 的目录   提前安装active-perl 配置 ...