下面是一个需要登陆账户和密码后可以浏览的网站。 那么我们如何,在不需要登陆账户密码的情况下使用requests爬取网页信息呢?
http://www.aanngg.com/index.php/Index/Index/category/kuanshi/2/clear/all/navPos/2
步骤:
STEP1: 使用CHROME登陆账户密码,找到COOKIE。
STEP2: 在requests 的 headers 中设置COOKIE
STEP1:
使用CHROME浏览器,登陆需要登陆的网址(如:http://www.aanngg.com/index.php/Index/Index/category/kuanshi/2/clear/all/navPos/2)。
然后点击 F12
结果如下,会弹出下面的开发者工具: 依次 点击 Network,Preserve log 。 然后输入账户密码,并点击登陆。
然后:随便点击其中的几个左边的文件,一般为JSON格式的。
在右边点击Headers 的位置,我们会发现Cookie,将其复制。
STEP2:
# 将复制的cookie 复制到 cookie= 这个位置,记得要用三引号,因为cookie 一般比较长,如果用双引号经常因为换行的问题出错。
# 在headers 中设置对应的 'Cookie': cookie 就可以了。
import random
import requests
from bs4 import BeautifulSoup
import chardet
import re
import pymysql
from datetime import *
import time
# 将复制的cookie 复制到 cookie= 这个位置,记得要用三引号,因为cookie 一般比较长,如果用双引号经常因为换行的问题出错。
cookie = '''PHPSESSID=06e2ff0ahgr7heg0f2qsk2ggk6; history=think%3A%7B%220%22%3A%221956%22%2C%222%22%3A%22425%22%2C%223%22%3A%22172%22%2C%224%22%3A%221895%22%2C%225%22%3A%221935%22%7D; d070c46af402eb5bb2185af10ea95ba8=143fb0a022570267d93df7351edb3b17; d070c46af402eb5bb2185af10ea95ba8_op=04097392bb463f532c4414c53b9d8add'''
url = 'http://www.aanngg.com/index.php/Index/Index/category/kuanshi/1/clear/all/navPos/3/p/1'
# 在headers 中设置对应的 'Cookie': cookie 就可以了。
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 OPR/26.0.1656.60',
'Cookie': cookie
}
response = requests.get(url=url, headers=headers, timeout=30)
response.encoding = chardet.detect(response.content)['encoding']
text = response.text
soup = BeautifulSoup(text, 'lxml')
print(soup)
结果如下:爬取得结果和网页的源码一样了。