您的位置:首页 > 编程语言 > Python开发

Python 爬虫学习2 向网页提交数据

2016-04-14 20:57 951 查看
看了极客学院学习单线性爬虫的视频,觉得对爬虫的了解更加深入

下面我稍稍对爬取网页数据的方式做了一下小结

下面是要爬取数据的网址

 日语学习网                 http://jp.tingroom.com/yuedu/yd300p/ 

向网页提交数据   --  get 和 post

get和post各有什么作用

get 从服务器上获取数据

post 是向服务器传送数据

get 通过构造URL中的参数来是实现功能

post 将数据放在header提交数据

是通过get方式还是post方式来实现爬取数据必须根据网页,可通过审查元素network来查看

如下图:查看   http://jp.tingroom.com/yuedu/yd300p/  



可以看到该网址可以通过get方式来爬取数据

下面是我爬取数据的一个例子

第一步,首先要导入要用到的模块

import
requests
import re
import sys
reload(sys)

sys.setdefaultencoding("gb18030")   # 编码转换  强制转换为gb18030 str类型
    

type = sys.getfilesystemencoding()

header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36'}

##  右击审查元素   network下 request headers 如下图:



#   User-Agent 模拟浏览器来下载数据

第二步,通过get来获取数据
html = requests.get('http://jp.tingroom.com/yuedu/yd300p/',headers=header)    #调用header
html.encoding = 'utf-8'
#print  html.text

下面是利用正则表达式来查找日文,输出
title=re.findall('color:#666666;">(.*?)</span>',html.text,re.S)  ##  查找日文
for each
in
title:                                                    #   color:#666666;">    及   </span>   通过审查元素Elements来查看
    printeach      ##  打印日文

chinese = re.findall('color: #039;">(.*?)</a>',html.text,re.S)   ##  查找中文
for each
in
chinese:

    print each                                                     ##  打印中文

结果如下:



如何通过post来获取数据?

通过审查元素来查看一个网址是get还是post来获取数据

下面是用post爬取数据的方法

import
requests
import re
url = 'https://www.crowdfunder.com/browse/deals&template=flase'   
#html= requests.get(url).text
#print html.text

##  创建了一个字典
data = {'entities_only':'true',
        'page':'1'     #  网址第几页,可以变动
       
}

html_post = requests.post(url,data=data)         #  利用post获取网页数据
title = re.findall('"card-title">(.*?)</div>',html_post.text,re.S)   
                  ##
 <card-title>  </div>通过审查元素Elements来查看,不同网页数据匹配不同

for
eachin title:

    print each

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: