(一)代码(题目网站:爬虫-基础1 - GlidedSky)
import requests
from bs4 import BeautifulSoup
url='http://www.glidedsky.com/level/web/crawler-basic-1'
headers={
xxxx
}
session=requests.Session()
response=session.get('http://www.glidedsky.com/level/web/crawler-basic-1', headers=headers)
bs_1=BeautifulSoup(response.text,'html.parser')
number_list=bs_1.find_all('div',{'class':'col-md-1'})
sum_value=0
for i in range(0,len(number_list)):
num=int(number_list[i].get_text())
sum_value+=num
print(sum_value)
(二)遇到的问题
1、登录状态
(1)headers的获取:
a. 先在页面登录上,这样后面刷新后cookie状态才对
b. 打开Chrome的F12——选中Network——刷新后会显示出详情信息,选中主页面的headers——复制request headers
(2)headers的使用
session = requests.Session()
#request.Session :保持会话的持续
response = session.get(url, headers=headers)
#以该headers向目标url发送get请求,获得页面反馈,储存在response中
附:
a. 登录方法:
b. session搜到的用法:
python的requests.session()_python中requests库session对象的妙用详解_weixin_40007515的博客-CSDN博客
注:原先使用urlopen方法,查询后发现没有header参数,由此出发查询了相关库(urllib,urllib2)以及token获取的方法。(token是由于看到页面解释中csrf token联想的)
2、返回对象的处理
一开始误以为可以像其他爬虫处理方式,直接对返回对象调用read(),显示response对象不可以。
后用response.text 获取文本形式,用beautifulsoup解读
3、对number_list 的处理
print后发现得到的结果是带标签的数组,针对每一个元素用get_text ()方法获取标签中间的文本内容
附:
a. get_text 发现处以及相关方法:
beautifulsoup提取所有<a>标签内容 Python_suibianshen2012的专栏-CSDN博客_beautifulsoup获取所有的标签
(三)后续
网站的邮箱验证一直没发,确认不了答案正确性,有点失望