爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)

爬虫新手学习1-爬虫基础

1、urllib和urllib2区别实例

urllib和urllib2都是接受URL请求相关模块,但是提供了不同的功能,两个最显著的不同如下:

urllib可以接受URL,不能创建设置headers的Request类实例,urlib2可以。

url转码

https://www.baidu.com/s?wd=%E5%AD%A6%E7%A5%9E

python字符集解码加码过程:

2.爬虫GET提交实例

#coding:utf-8

import urllib    #负责url编码处理
import urllib2

url = "https://www.baidu.com/s"
word = {"wd": "繁华"}
word = urllib.urlencode(word)   #转换成url编码格式(字符串)
newurl = url + "?" + word

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

request = urllib2.Request(newurl, headers=headers)

response = urllib2.urlopen(request)

print response.read()

#coding:utf-8

import urllib    #负责url编码处理
import urllib2

url = "https://www.baidu.com/s"
word = {"wd": "咖菲猫"}
word = urllib.urlencode(word)   #转换成url编码格式(字符串)
newurl = url + "?" + word

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

request = urllib2.Request(newurl, headers=headers)

response = urllib2.urlopen(request)

print response.read()

自定义爬虫GET提交实例

#coding:utf-8

import urllib    #负责url编码处理
import urllib2

url = "https://www.baidu.com/s"
keyword = raw_input("请输入要查询的关键字:")
word = {"wd": keyword}
word = urllib.urlencode(word)   #转换成url编码格式(字符串)
newurl = url + "?" + word

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

request = urllib2.Request(newurl, headers=headers)

response = urllib2.urlopen(request)

print response.read()

3.批量爬取贴吧页面数据

分析贴吧URL

http://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F

pn递增50为一页

0为第一页

http://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&pn=0

50为第二页

http://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&pn=50

100为第三页

http://tieba.baidu.com/f?kw=%E7%BB%9D%E5%9C%B0%E6%B1%82%E7%94%9F&pn=100

批量爬贴吧实例

#coding:utf-8

import urllib
import urllib2

def loadPage(url, filename):
    ‘‘‘
        作用:根据url发送请求, 获取服务器响应文件
        url:需要爬取的url地址
        filename:文件名
    ‘‘‘

    print "正在下载" + filename

    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

    request = urllib2.Request(url, headers = headers)
    response = urllib2.urlopen(request)
    return response.read()

def writeFile(html, filename):
    ‘‘‘
        作用:保存服务器相应文件到本地硬盘文件里
        html:服务器相应文件
        filename:本地磁盘文件名
    ‘‘‘

    print "正在存储" + filename
    with open(unicode(filename, ‘utf-8‘), ‘w‘) as f:
        f.write(html)
    print "-" * 20

def tiebaSpider(url, beginPage, endPage, name):
    ‘‘‘
        作用:负责处理url,分配每个url去发送请求
        url:需要处理的第一个url
        beginPage:爬虫执行的起始页面
        endPage:爬虫执行的截止页面
    ‘‘‘
    for page in range(beginPage, endPage + 1):
        pn = (page - 1) * 50

        filename = "第" + name + "-" + str(page) + "页.html"
        #组合为完整的url,并且pn值每次增加50
        fullurl = url + "&pn=" + str(pn)
        #print fullurl

        #调用loadPage()发送请求获取HTML页面
        html = loadPage(fullurl, filename)
        #将获取到的HTML页面写入本地磁盘文件
        writeFile(html, filename)

#模拟main函数"
if __name__ == "__main__":
    kw = raw_input("请输入需要爬取的贴吧:")
    beginPage = int(raw_input("请输入起始页:"))
    endPage = int(raw_input("请输入终止页:"))

    url = "http://tieba.baidu.com/f?"
    key = urllib.urlencode({"kw": kw})

    #组合后的url示例:http://tieba.baidu.com/f?kw=绝地求生
    newurl = url + key
    tiebaSpider(newurl, beginPage, endPage, kw)

4.Fidder使用安装

下载fidder

安装后,照下图设置

5.有道翻译POST分析

调用有道翻译POST API实例

#coding:utf-8

import urllib
import urllib2

#通过抓包的方式获取的url,并不是浏览器上显示的url
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"

#完整的headers
headers = {
    "Accept": "application/json, text/javascript, */*; q=0.01",
    "Origin": "http://fanyi.youdao.com",
    "X-Requested-With": "XMLHttpRequest",
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36",
    "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"
}

#用户接口输入
key = raw_input("请输入需要翻译的英文单词:")

#发送到web服务器的表单数据
formdata = {
    "i": key,
    "from": "AUTO",
    "to": "AUTO",
    "smartresult": "dict",
    "client": "fanyideskweb",
    "salt": "1513519318944",
    "sign": "29e3219b8c4e75f76f6e6aba0bb3c4b5",
    "doctype": "json",
    "version": "2.1",
    "keyfrom": "fanyi.web",
    "action": "FY_BY_REALTIME",
    "typoResult": "false"
}

#经过urlencode转码
data = urllib.urlencode(formdata)

#如果Request()方法里的data参数有值,那么这个请求就是POST
#如果没有,就是Get
request = urllib2.Request(url, data= data, headers= headers)

print urllib2.urlopen(request).read()

6.Ajax加载方式的数据获取

豆瓣分析Ajax

爬取豆瓣电影排行信息实例

#coding:utf-8

import urllib2
import urllib

url = "https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action="

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}

formdata = {
    "start": "0",
    "limit": "20"
}

data = urllib.urlencode(formdata)

request = urllib2.Request(url, data = data, headers = headers)

print urllib2.urlopen(request).read()

时间: 2024-10-11 19:34:31

爬虫新手学习2-爬虫进阶(urllib和urllib2 的区别、url转码、爬虫GET提交实例、批量爬取贴吧数据、fidder软件安装、有道翻译POST实例、豆瓣ajax数据获取)的相关文章

Python爬虫学习教程,批量爬取下载抖音视频

这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: 1 ''' 2 在学习过程中有什么不懂得可以加我的 3 python学习交流扣扣qun,934109170 4 群里有不错的学习教程.开发工具与电子

Node 爬虫,批量爬取头条视频并保存

项目地址:GitHub 目标网站:西瓜视频项目功能:下载头条号[维辰财经]下的最新20个视频姊妹项目:批量下载美女图集 简介 一般批量爬取视频或者图片的套路是,使用爬虫获得文件链接集合,然后通过 writeFile 等方法逐个保存文件.然而,头条的视频,在需要爬取的 html 文件(服务端渲染输出)中,无法捕捉视频链接.视频链接是页面在客户端渲染时,通过某些 js 文件内的算法或者解密方法,根据视频的已知 key 或者 hash 值,动态计算出来并添加到 video 标签的.这也是网站的一种反爬

爬虫新手学习1-爬虫基础

一.    为什么要做爬虫?首先:都说现在是"大数据时代",那数据从何而来?企业产生的用户数据:百度指数.阿里指数.TBI腾讯浏览指数.新浪微博指数数据平台购买数据:数据堂.国云数据市场.贵阳大数据交易所政府/机构公开的数据:中华人民共和国国家统计局数据.世界银行公开数据.联合国数据.纳斯达克.数据管理咨询公司:麦肯锡.埃森哲.艾瑞咨询爬取网络数据:如果需要的数据市场上没有,或者不愿意购买,那么可以选择招/做一名爬虫工程师,自己动手丰衣足食.拉勾网Python爬虫职位 二.    通用

Python 爬虫入门实例(爬取小米应用商店的top应用apk)

一,爬虫是什么? 爬虫就是获取网络上各种资源,数据的一种工具.具体的可以自行百度. 二,如何写简单爬虫 1,获取网页内容 可以通过 Python(3.x) 自带的 urllib,来实现网页内容的下载.实现起来很简单 import urllib.request url="http://www.baidu.com" response=urllib.request.urlopen(url) html_content=response.read() 还可以使用三方库 requests ,实现起

爬虫(十七):Scrapy框架(四) 对接selenium爬取京东商品数据

1. Scrapy对接Selenium Scrapy抓取页面的方式和requests库类似,都是直接模拟HTTP请求,而Scrapy也不能抓取JavaScript动态谊染的页面.在前面的博客中抓取JavaScript渲染的页面有两种方式.一种是分析Ajax请求,找到其对应的接口抓取,Scrapy同样可以用此种方式抓取.另一种是直接用 Selenium模拟浏览器进行抓取,我们不需要关心页面后台发生的请求,也不需要分析渲染过程,只需要关心页面最终结果即可,可见即可爬.那么,如果Scrapy可以对接S

爬虫实例(一)——爬取微博动态

首语:开始准备认真学习爬虫了,先从基础的开始学起,比如先爬取微博的个人动态. 两个难点:获取动态加载的内容和翻页这两项操作. 对象:何炅的个人 需要的URL: 首页url:https://weibo.com/hejiong?is_search=0&visible=0&is_all=1&is_tag=0&profile_ftype=1&page=1#feedtop 我们可以直接用get方法请求该URL,但是注意要带上cookies,这样才能得到网页信息.cookies

Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

<工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短评信息,一共20条.一般我们加载大量数据的时候,都会做分页,但是这个页面没有,只有一个滚动条. 随着滚动条往下拉,信息自动加载了,如下图,变40条了.由此可见,短评是通过异步加载的. 我们不可能一次性将滚动条拉到最下面,然后来一次性获取全部的数据.既然知道是通过异步来加载的数据,那么我们可以想办法直接去获取这些异步的数据. 打开 Network 查看分析 http 请求,可以

java爬虫,爬取当当网数据

 背景:女票快毕业了(没错!我是有女票的!!!),写论文,主题是儿童性教育,查看儿童性教育绘本数据死活找不到,没办法,就去当当网查询下数据,但是数据怎么弄下来呢,首先想到用Python,但是不会!!百度一番,最终决定还是用java大法爬虫,毕竟java熟悉点,话不多说,开工!: 实现: 首先搭建框架,创建一个maven项目,使用框架是springboot和mybatis,开发工具是idea,pom.xml如下: <?xml version="1.0" encoding="

python爬虫—爬取百度百科数据

爬虫框架:开发平台 centos6.7 根据慕课网爬虫教程编写代码 片区百度百科url,标题,内容 分为4个模块:html_downloader.py 下载器 html_outputer.py 爬取数据生成html模块 html_parser 获取有用数据 url_manager url管理器 spider_main 爬虫启动代码 spider_main.py 1 #!/usr/bin/python 2 #-*- coding: utf8 -*- 3 4 import html_download