一、爬虫环境

Python3.6
scrapy1.4
火狐浏览器
qq浏览器

二、scrapy shell 测试并获取 xpath

1、进入scrapy shell

2 、获取html

fetch('https://movie.douban.com/top250')

DEBUG: Crawled (403) GET https://movie.douban.com/top250访问失败
失败原因:豆瓣250拒绝爬虫访问
解决方案:为访问添加header,伪装成浏览器访问
浏览器header参考位置

scrapy shell 添加header参考 :http://blog.csdn.net/qq_30242609/article/details/54581674

$ scrapy shell
...
>>> from scrapy import Request
>>> req = Request('yoururl.com', headers={'User-Agent':'Mozilla/5.0'}) >>> fetch(req)

如下

成功获取网页
使用qq浏览器 ‘查看元素’ 获取所需元素的xpath(火狐浏览器查看方法自行搜索)

得到

*[@id=”content”]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]

response.xpath(‘//*[@id=”content”]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()’).extract()

类比分析网页得到电影名字:

Xpath = ‘//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()’

在shell中验证结果

验证通过,在shell中已经得到了所需xpath

三、编写python代码

1、分析豆瓣250网址
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=25&filter=
.
.
.

得到需要打开的网址表达式

for i in range(10):
page_url = 'https://movie.douban.com/top250?start=' + str(i*25) + '&filter='

  

2、如何在python中运用xpath()筛选数据

from lxml import etree
#html 为urllib.request.urlopen(url).read()文本
html = url_open(page_url) selector = etree.HTML(html) result = selector.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')

至此已经获得了xpath路径,爬虫网址源代码已经没有难度了

3 源代码参考

import urllib.request
import os
from lxml import etree #打开一个网页操作
def url_open(url):
req = urllib.request.Request(url)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3226.400 QQBrowser/9.6.11681.400')
response = urllib.request.urlopen(url)
html = response.read() return html #找到数据进行xpath分析
def find_urls(page = 1):
result_data = []
file_urls = []
url = 'https://movie.douban.com/top250?start=0&filter='
for i in range(10):
page_url = 'https://movie.douban.com/top250?start=' + str(i*25) + '&filter='
html = url_open(page_url) selector = etree.HTML(html) result = selector.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()') for each in result:
result_data.append(each) return result_data #将数据保存在本地
def save(name):
file_name = '豆瓣250.txt'
with open(file_name, 'w') as f:
for each in name:
f.write(each)
f.write('\n')
print(each) if __name__ == '__main__':
name = find_urls()
save(name)

4、爬虫结果

四、总结

1、获取xpath
2、获取爬虫网址
3、编写python代码

五、最后说两句

第一次编写教程,也是边学边写写,第一次教程会稍微啰嗦点,后面较复杂的会尽量写的简洁易懂些。

Python 爬虫个人记录(一)豆瓣电影250的更多相关文章

  1. python爬虫--用xpath爬豆瓣电影

    步骤 将目标网站下的页面抓取下来 将抓取下来的数据根据一定规则进行提取   具体流程 将目标网站下的页面抓取下来 1. 倒库 import requests 2.头信息(有时候可不写) headers ...

  2. Python爬虫个人记录(三)爬取妹子图

    这此教程可能会比较简洁,具体细节可参考我的第一篇教程: Python爬虫个人记录(一)豆瓣250 Python爬虫个人记录(二)fishc爬虫 一.目的分析 获取煎蛋妹子图并下载 http://jan ...

  3. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

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

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

  5. Python爬虫之多线程下载豆瓣Top250电影图片

    爬虫项目介绍   本次爬虫项目将爬取豆瓣Top250电影的图片,其网址为:https://movie.douban.com/top250, 具体页面如下图所示:   本次爬虫项目将分别不使用多线程和使 ...

  6. Python爬虫入门教程:豆瓣Top电影爬取

        基本开发环境 Python 3.6 Pycharm 相关模块的使用 requests parsel csv 安装Python并添加到环境变量,pip安装需要的相关模块即可. 爬虫基本思路 一. ...

  7. 爬虫——正则表达式爬取豆瓣电影TOP前250的中英文名

    正则表达式爬取豆瓣电影TOP前250的中英文名 1.首先要实现网页的数据的爬取.新建test.py文件 test.py 1 import requests 2 3 def get_Html_text( ...

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

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

  9. Python爬虫实践 -- 记录我的第二只爬虫

    1.爬虫基本原理 我们爬取中国电影最受欢迎的影片<红海行动>的相关信息.其实,爬虫获取网页信息和人工获取信息,原理基本是一致的. 人工操作步骤: 1. 获取电影信息的页面 2. 定位(找到 ...

随机推荐

  1. Java并发编程原理与实战十二:深入理解volatile原理与使用

    volatile:称之为轻量级锁,被volatile修饰的变量,在线程之间是可见的. 可见:一个线程修改了这个变量的值,在另一个线程中能够读取到这个修改后的值. synchronized除了线程之间互 ...

  2. OAuth2:Authorization Flows

    Ref:http://www.dannysite.com/blog/176/ OAuth2.0协议定义了用于获得授权的四种主要授权类型. 1. Client Credentials 一种基于APP的密 ...

  3. OI,再见

    SDOI2016 因为自己的沙茶犯了低级的沙茶错误而滚粗. day2原可以AK,却因为眼残脑残只拿到90. 由此可见,细节永远不是一个小问题. 想想过去的日子,还真是舍不得. 但过去的终将过去,未来的 ...

  4. Eclipse中如何改变主题

    童鞋们, eclipse主题太丑?想设置护眼的主题? 看看这些主题: 请移驾: Eclipse Color Themes 怎么设设置? 1. 打开”eclipse marketplace“, 如下图: ...

  5. Mysql服务优化

    Mysql服务优化   Mysql服务加速优化的6个阶段 硬件层面优化 操作系统层面优化 Mysql数据库层面优化 网站集群架构层面优化 安全优化 流程.制度控制优化 1.硬件层面优化 CPU     ...

  6. μC/OS-Ⅱ在C8051F060上的移植及其应用

    嵌入式操作系统是嵌入式应用的基础和核心.随着应用系统的不断复杂化和系统实时性需求的不断提高,对相应软件的逻辑结构.稳定性.实时性也提出了更高的要求,以传统的前后台编程模式编制软件将更加困难,而且容易出 ...

  7. MeasureSpec介绍及使用详解

    一个MeasureSpec封装了父布局传递给子布局的布局要求,每个MeasureSpec代表了一组宽度和高度的要求.一个MeasureSpec有大小和模式组成.他有三种模式: UNSPECIFIED ...

  8. 揭秘Patchwork APT攻击-恶意软件样本BADNEWS

    1.前言 在2016年左右研究人员发现一个与东南亚和中国南海问题的APT攻击,该APT攻击利用MS Offcie系列漏洞通过钓鱼邮件的形式欺骗受害者点击木马.以美国在内的各国政府和公司为目标发送了大量 ...

  9. Linux禁止ping的俩种方法【转】

    Linux禁止ping以及开启ping的方法   Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任 ...

  10. Python之协程(coroutine)

    Python之协程(coroutine) 标签(空格分隔): Python进阶 coroutine和generator的区别 generator是数据的产生者.即它pull data 通过 itera ...