python爬虫的基本知识储备

1.关于引用全局变量:

  引用全局变量并不是拿来就可以用,拿来就可以改的,当在子函数中引用全局变量的时候,应该声明这个变量是全局变量:如global test,全局变量test。具体:https://blog.csdn.net/my2010sam/article/details/17735159
2.关于寻找网页的原始图片:

  一般来说,显示在网页上面的图片是经过压缩的缩略图片,但是我们想要爬取的却是高清的原图,那么这个时候我们就可以右键显示网页源码,到网页源码里面找,一般来说,都是可以找到原图的链接的,打个比方,百度图片的原图链接是在一个objURL的对象之下的,ctrl+f查找一下就可以找到了,其他的网站估计也差不多,仔细找就好

3.关于下一个网页链接:

  有时候网页链接非常的长,比如百度图库的链接就是很臭很长,所以通过 : 观察网页规律然后传入参数构造下一个页面的链接,这个方法显然行不通。那么这个时候我们就要寻找另外一个方法了,那就是:右键先进入网页源码,然后在源码中检索页面当中显示的
“下一页“这样的词汇,还是拿百度图库来做例子:先右上角切换翻页模式,然后在网页源码当中检索。贴图如下:

4.最后在说一下最重要的一个知识点,就是网页的中文解码:

  当我们用requestes库的get函数请求成功之后,我们想把网页的源码保存下来,但是我们保存之后发现,网页源码当中的中文字符,不管怎么保存都是乱码的,这时候保存之前就要用上这个句子:r.encoding = r.apparent_encoding,r.apparent_encoding表示获取网页的正确编码方式,那么这句话得到意思就是让网页的编码方式等于他正确的编码方式(网上原话),然后在保存的时候with ope(‘file.txt‘,‘w‘,encoding = ‘utf-8‘) as f:.........。这样保存下来的文件就不会是中文乱码的了。

附上一段代码:

import os
import requests
import json
from hashlib import md5
from multiprocessing.pool import Pool
from pyquery import PyQuery as pq
from fake_useragent import  UserAgent
from urllib.parse import quote
import time
import re
url_list = []
page_num = 1
headers = {
        ‘User-Agent‘ : ‘ua.random()‘
    }
def get_one_page(url):
    global page_num
    ua = UserAgent()
    try :
        r = requests.get(url=url, headers=headers)
        if r.status_code == 200:
            print ("page %s status_code = %s" % (page_num,r.status_code))
            page_num = page_num + 1
            return r.text
    except requests.ConnectionError:
        return None

def get_image_list(html):
    global url_list
    image_list = []
    pattern_1 = re.compile(‘objURL":"(.*?)",‘,re.S)
    list = re.findall(pattern_1,html)
    for item in list:
        image_list.append(item)

    pattern_2 = re.compile(‘<strong><span class="pc"(.*?)<a href="(.*?)"><span class="pc" data="right"‘, re.S)
    list_2 = re.findall(pattern_2,html)
    next_url = ‘https://image.baidu.com‘ + ‘‘.join(list_2[0][1])
    url_list.append(next_url)
    return image_list

def save_image(image_list):
    if not os.path.exists(‘picture‘):
        os.mkdir(‘picture‘)
    try:
        for item in image_list:
            #print (item)
            response = requests.get(url = item,headers = headers)
            file_path = ‘{0}/{1}.{2}‘.format(‘picture‘, md5(response.content).hexdigest(),‘jpg‘)
            if not os.path.exists(file_path):
                with open(file_path,‘wb‘) as f:
                    f.write(response.content)
                    print ("success download: " + file_path)
            else :
                print ("already down" + file_path)
            time.sleep(2)
    except:
        print ("fail to download")
if __name__ == ‘__main__‘:
    keyword = input("输入要爬取的关键词:")   #要爬取的内容
    page = input("输入要爬取的页数:")      #要爬取的页数
    keyword = str(keyword)
    page = int(page)

    keyword = quote(keyword)
    url = ‘https://image.baidu.com/search/flip?tn=baiduimage&ipn=r&ct=201326592&cl=2&lm=-1&st=-1&fm=result&fr=&sf=1&fmq=1535006333854_R&pv=&ic=0&nc=1&z=&se=1&showtab=0&fb=0&width=&height=&face=0&istype=2&ie=utf-8&ctd=1535006333855%5E00_1903X943&word=‘ + keyword
    url_list.append(url)
    for each in range(page):
        html = get_one_page(url_list[each])
        print (url_list[each])
        image_list = get_image_list(html)
        #print (image_list)
        save_image(image_list)

原文地址:https://www.cnblogs.com/myxdashuaige/p/9525887.html

时间: 2024-11-10 04:14:52

python爬虫的基本知识储备的相关文章

python爬虫之基本知识

随着数据的海量增长,我们需要在互联网上选取所需要的数据进行自己研究的分析和实验.这就用到了爬虫这一技术,下面就跟着小编一起初遇python爬虫! 一.请求-响应 在利用python语言实现爬虫时,主要用到了urllib和urllib2两个库.首先用一段代码说明如下: 1 import urllib 2 import urllib2 3 4 url="http://www.baidu.com" 5 request=urllib2.Request(url) 6 response=urlli

5个python爬虫教材,让小白也有爬虫可写,含视频教程!

认识爬虫 网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据. python写爬虫的优势 其实以上功能很多语言和工具都能做,但是用python爬取的速度更快,代码最简单,总而言之就是高效!与其它的编程语言作比较,python爬去网站的文档的接口更清晰明了,python的各种包提供给开发者访问网页文档的API.请先静下心看案例介绍.再进入里面寻找视频教程 由认识爬虫可知,在互联网上爬去内容,必然会有访问浏览器这个过程.程序员爬取网站内容必须模拟浏览器

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

【图文详解】python爬虫实战——5分钟做个图片自动下载器

python爬虫实战--图片自动下载器 之前介绍了那么多基本知识[Python爬虫]入门知识,大家也估计手痒了.想要实际做个小东西来看看,毕竟: talk is cheap show me the code! 制作爬虫的基本步骤 顺便通过这个小例子,可以掌握一些有关制作爬虫的基本的步骤. 一般来说,制作一个爬虫需要分以下几个步骤: 1. 分析需求(对,需求分析非常重要,不要告诉我你老师没教你) 2. 分析网页源代码,配合F12(没有F12那么乱的网页源代码,你想看死我?) 3. 编写正则表达式或

python爬虫实战:利用scrapy,短短50行代码下载整站短视频

近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题. 因为这个事儿,勾起了我另一个念头,这不最近一直想把python爬虫方面的知识梳理梳理吗,干脆借机行事,正凑着短视频火热的势头,做一个短视频的爬虫好了,中间用到什么知识就理一理. 我喜欢把事情说得很直白,如果恰好有初入门的朋友想了解爬虫的技术,可以将就看看,或许对你的认识会有提升.如果有高手路过,

自学Python之四 爬虫基础知识储备

首先,推荐两个关于python爬虫不错的博客:Python爬虫入门教程专栏   和 Python爬虫学习系列教程 .写的都非常不错,我学习到了很多东西!在此,我就我看到的学到的进行总结一下! 爬虫就是一个不断的去抓去网页的程序,根据我们的需要得到我们想要的结果!但我们又要让服务器感觉是我们人在通过浏览器浏览不是程序所为!归根到底就是我们通过程序访问网站得到html代码,然后分析html代码获取有效内容的过程.下面让我们从最简单的爬虫开始: 爬取一个页面源代码 在python中,抓取网页的库是ur

python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding:utf-8from com.wenhy.crawler_baidu_baike import url_manager, html_downloader, html_parser, html_outputer print "爬虫百度百科调度入口" # 创建爬虫类class SpiderMai

爬虫知识储备篇---分析http请求

(1).为何需要进行HTTP请求分析 答:方便我们编写的爬虫精准定位爬取目标 (2).知识储备 1.什么是抓包? 抓包:抓取客户端与服务器之间进行通信时产生的数据包 2.了解抓包工具:chrome下的开发者模式,使用F12即可打开 功能结构分析:(参考文档:http://www.css88.com/doc/chrome-devtools/) Elements(元素面板):用于查看网页源代码HTML中的任一元素,手动修改任一元素的属性和样式且能在浏览器中得到实时反馈 Console(控制台面板):

开始我的Python爬虫学习之路

因为工作需要经常收集一些数据,我就想通过学爬虫来实现自动化完成比较重复的任务. 目前我Python的状况,跟着敲了几个教程,也算是懂点基础,具体比较深入的知识,是打算从做项目中慢慢去了解学习. 我是觉得如果一开始就钻细节的话,是很容易受到打击而放弃的,做点小项目让自己获得点成就感路才更容易更有信心走下去. 反正遇到不懂的就多查多问就对了. 知乎上看了很多关于入门Python爬虫的问答,给自己总结出了大概的学习方向. 基础: HTML&CSS,JOSN,HTTP协议(这些要了解,不太需要精通) R