Python 爬虫个人记录(一)豆瓣电影250
来源:互联网 发布:算法 知乎 编辑:程序博客网 时间:2024/06/05 01:14
一、爬虫环境
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={"header1":"value1"})>>> 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.requestimport osfrom 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
- python爬虫 豆瓣电影
- python豆瓣电影爬虫
- Python爬虫豆瓣电影top250
- Python爬虫实战(一):爬取豆瓣电影top250排名
- Python 3爬虫小实战(一)—— 豆瓣电影Top250
- python3--爬虫实战一:爬取豆瓣电影250
- Python爬虫初学(1)豆瓣电影top250评论数
- Python爬虫初学(2)豆瓣电影top250评论数
- python3 爬虫—爬取豆瓣电影图片(一)
- python爬虫,爬豆瓣top250电影
- python爬虫之豆瓣电影评分
- python爬虫之获取豆瓣电影信息
- Python爬虫实例:豆瓣热播电影
- python爬虫获取豆瓣正在热播电影
- [Python爬虫]1.豆瓣电影Top250
- Python爬虫获取豆瓣电影TOP250
- Python爬虫——豆瓣电影Top250
- mycat小白分片初体验
- Activity那些事
- 搬瓦工VPS+LNMP+Wordpress快速搭建个人网站
- 训练日记-11
- 博客搬家
- Python 爬虫个人记录(一)豆瓣电影250
- UVALive
- linux安装jdk(CentOS)
- 【FFT】BZOJ2179 FFT快速傅立叶
- SpringMvc单元测试
- Spring MVC
- Scala基础入门(五)Scala 内置9种数据类型
- Kaggle:Titanic问题(3)——经验总结
- eclipse导入Maven工程Failure to transfer org.apache.maven:maven-archiver:pom:2.4.1 from http://repo.mave