有时候我们想要别的网站的数据的时候,有些不需要模拟登陆发送请求,只是当当的发送登陆之后cookie之后,就可以进行登陆和抓取页面操作。

使用requests模块比较简单。

目前支持python最高版本:3.5.

1、抓取前需要知道在发送请求的cookie值。可以在浏览器中查看。

requests 爬取网页内容

2、requests定义cookie参数:key=value形式。要想发送你的cookies到服务器,可以使用 cookies 参数:

1 >>> url = 'http://httpbin.org/cookies'
2 >>> cookies = dict(cookies_are='working')
3 
4 >>> r = requests.get(url, cookies=cookies)
5 >>> r.text
6 '{"cookies": {"cookies_are": "working"}}'

 其中cookies_are可以使用一组cookie来传值。以'cookies_are'为key值构成的键值对。每个key=value用分好分割。比如:

1 cookies = { 'cookies_are':
2 'gpsd=99870dc9b245f73ab8e081114xxxxxddada; __utma=197952765.1227908348.1475892329.1475892329.1475896xxx;'}

多个cookie请到浏览器中请求头中复制。

requests 爬取网页内容

简单抓取页面数据的脚本:运行环境:python2.6和2.7版本。

 1 # -*- coding=utf-8 -*-
 2 ###########################
 3 import requests
 4 # 定义cookies
 5 cookies = { 'cookies_are':'xxxx'}
 6 
 7 def get_app_rd_manager(page):
 8     # 传递不同的页面,获取每页展示的应用信息
 9     payload = {'currentPage:': page, 'pageSize': 100, 'pageFlag': 'true', 'keyword': ''}
10     url = "http://j-one.jd.com/systemApp/appBase?currentPage=%s&pageSize=100"%(page)
11     r = requests.post(url,data=payload,cookies=cookies)
12     r.encoding="utf-8"
13     page_list = r.content.split()
14     tmp = list()
15     num = -1
16     for i in page_list:
17         num += 1
18         if i == 'name="appId"':
19             #获取关键字,获取之后的几行内容并数据处理
20             app_id = page_list[num+3][4:][:-5]
21             app_name_english = page_list[num+5][4:][:-5]
22             app_name_chinese =page_list[num+6][4:][:-5]
23             #print app_name_english
24             app_rd_manager =page_list[num+7][4:][:-5]
25             #print'%s %s'%(app_name_english,app_rd_manager)
26            # ret = {'app_id':app_id,'app_name_english':app_name_english,'app_name_chinese':app_name_chinese,'app_rd_manager':app_rd_manager}
27             ret={"应用人":app_rd_manager.__repr__,'应用名':app_name_chinese.__repr__}
28             tmp.append(ret)
29     return tmp
30 
31 if __name__ == "__main__":
32     result = list()
33     i = 0
34     while True:
35         i += 1
36         tmp_list = get_app_rd_manager(i)
37         if not tmp_list:
38             break;
39         result.extend(tmp_list)
40     print result,len(result)

 更详细文档请看:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html#url

爬虫利器:bs4模块

详情请见:http://cuiqingcai.com/1319.html

 

相关文章: