美文网首页我爱编程
一个爬虫基本套路

一个爬虫基本套路

作者: 4eade07294ca | 来源:发表于2018-03-30 15:38 被阅读0次

还是豆瓣,现在学爬虫先爬豆瓣都成一种行规了,别的不多说,今天用的一个pyquery,很好用,是模仿jquery的,比xpath还简单,直接看代码。

import os
import requests
from pyquery import PyQuery as pq

class Model(object):
"""
基类, 用来显示类的信息
"""
def repr(self):
name = self.class.name
properties = ('{}=({})'.format(k, v) for k, v in self.dict.items())
s = '\n<{} \n {}>'.format(name, '\n '.join(properties))
return s

class Movie(Model):
"""
存储电影信息
"""
def init(self):
self.name = ''
self.score = 0
self.quote = ''
self.cover_url = ''
self.ranking = 0

def cached_url(url):
"""
缓存, 避免重复下载网页浪费时间
"""
folder = 'cached'
filename = url.split('=', 1)[-1] + '.html'
'cached/0.html'
path = os.path.join(folder, filename)
if os.path.exists(path):
with open(path, 'rb') as f:
s = f.read()
return s
else:
# 建立 cached 文件夹
if not os.path.exists(folder):
os.makedirs(folder)

    headers = {
        'user-agent': '''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8''',
}
# 发送网络请求, 把结果写入到文件夹中
r = requests.get(url, headers)
with open(path, 'wb') as f:
f.write(r.content)
return r.content

def movie_from_div(div):
"""
从一个 div 里面获取到一个电影信息
"""
e = pq(div)

# 小作用域变量用单字符
m = Movie()
m.name = e('.title').text()
m.score = e('.rating_num').text()
m.quote = e('.inq').text()
m.cover_url = e('img').attr('src')
m.ranking = e('.pic').find('em').text()

return m

def movies_from_url(url):
"""
从 url 中下载网页并解析出页面内所有的电影
"""
'''
只会下载一次
'''
page = cached_url(url)
'''
1. 解析 dom
2. 找到父亲节点
3. 每个子节点拿一个movie
'''
e = pq(page)
# print(page.decode())
# 2.父节点
items = e('.item')
# 调用 movie_from_div
# list comprehension
movies = [movie_from_div(i) for i in items]
return movies

def download_image(url):
folder = "img"
name = url.split("/")[-1]
path = os.path.join(folder, name)

if not os.path.exists(folder):
    os.makedirs(folder)

if os.path.exists(path):
    return

headers = {
    'user-agent': '''Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8''',
}
# 发送网络请求, 把结果写入到文件夹中
r = requests.get(url, headers)
with open(path, 'wb') as f:
    f.write(r.content)

def main():
for i in range(0, 250, 25):
url = 'https://movie.douban.com/top250?start={}'.format(i)
movies = movies_from_url(url)
print('top250 movies', movies)
[download_image(m.cover_url) for m in movies]

if name == 'main':
main()

相关文章

  • 大数据入门——爬虫的基本套路

    大数据入门——爬虫的基本套路 数据分析师必须要会的技能就是爬虫,在开始学习前先基本了解下爬虫。 爬虫有什么作用? ...

  • 一个爬虫基本套路

    还是豆瓣,现在学爬虫先爬豆瓣都成一种行规了,别的不多说,今天用的一个pyquery,很好用,是模仿jquery的,...

  • 2020年最全Python常用爬虫代码就这些了(附爬虫教程)

    Python爬虫必须掌握的核心能力: 1.掌握各类HTTP调试器用法 2.理解网络爬虫编写的基本套路 3.了解网络...

  • 大话爬虫的基本套路

    什么是爬虫? 网络爬虫也叫网络蜘蛛,如果把互联网比喻成一个蜘蛛网,那么蜘蛛就是在网上爬来爬去的蜘蛛,爬虫程序通过请...

  • 爬虫:赶集网十万数据级别

    成果: 代码在github:赶集爬虫 整体思路:1.爬取page_url。 这个基本都是套路,很容易爬取,然后存在...

  • Python3 爬虫介绍

    爬虫的基本原理 所谓爬虫就是一个自动化数据采集工具,你只要告诉它要采集哪些数据。其背后的基本原理就是爬虫程序向目标...

  • Python 网络爬虫(一)

    网络爬虫的基本介绍 学习爬虫,我想主要从以下几个方面来切入 -爬虫的原理? -爬虫的作用? -爬虫的实现? -爬虫...

  • python爬虫: 爬一个英语学习网站

    爬虫的基本概念 关于爬虫的基本概念, 推荐博客https://xlzd.me/ 里面关于爬虫的介绍非常通俗易懂.简...

  • python爬虫

    转载自:http://www.imooc.com/article/15028 爬虫基本架构 一个网络爬虫的简单架构...

  • 爬虫的套路

    准备URL 分析,找出我们需要URL如果当前URL对应的内容就是我们需要的数据, 直接用这个URL了如果这个URL...

网友评论

    本文标题:一个爬虫基本套路

    本文链接:https://www.haomeiwen.com/subject/gtnawxtx.html