必威体育Betway必威体育官网
当前位置:首页 > IT技术

用bs4和requests库,抓取nga舰队Collection萌战玩家投票

时间:2019-08-17 11:43:13来源:IT技术作者:seo实验室小编阅读:87次「手机版」
 

nga舰队collection

import requests
from bs4 import BeautifulSoup


url = 'http://bbs.ngacn.cc/read.php?tid=13428951'
req = requests.get(url)
j = req.cookies.get_dict()
k = int(j['lastvisit'])-1
cookies_ = {'guestJs': str(k)}
requests.utils.add_dict_to_cookiejar(req.cookies, cookies_)
#如果直接抓去nga页面我们的状态码会返回403,如果我们打开网页检查cookies我们会发现,我们用requests库get方法得到页面的cookies和浏览器的不一致
#,其中缺少了'guestJs'属性,其值为'lastvisit'-1,至于为什么会出现这种原因暂不清楚,如果有了解的人希望可以在评论中写下原因。

(咨询了一下,这里有人说可能是js里面setcookie了)

def getHTMLText(url):
    try:
        r = requests.get(url, cookies=req.cookies)
        r.raise_for_status()
        r.encoding = r.APParent_encoding
        return r.text
    except:
        return ''


def parsePage(html):
    try:
        soup = BeautifulSoup(html, 'lxml')
        sub_soup = soup.find_all('span', class_='postcontent ubbcode')
        return sub_soup
    except:
        return ''


def parseTag(soup):
    for i in range(len(soup)):
            print(soup[i].text)


def main():
    for i in range(1,61):
        url = 'http://bbs.ngacn.cc/read.php?tid=13428951'+'&page='+ str(i)
        html = getHTMLText(url)
        soup = parsePage(html)
        parseTag(soup)


main()

这里print出了所有的结果,通过这个例子希望给出一个爬虫框架,通过定义函数的方式去对网页进行爬取,否则修改代码的时候可能会出乎意料的麻烦。以上是通过之前介绍的两个库写的一个例子。这里关于票数统计就不写了,不在之前介绍的两个库的范围之内,有兴趣的可以自己写一下。

顺便一提,抓取网页的时候有时候会因为,request.headers中的'user-agent'是'Python-requests'而拒绝访问,这里也是可以通过更改其中的值来达到访问的目的。

相关阅读

爬爬爬,爬虫之获取数据——requests

推荐使用requests库,相比urllib使用要简介的多 requests向目标站点发送请求,获得一个HTTPresponse响应 import requests requests

requests库入门-6-Params参数请求举例

  前面一篇,我们介绍了三种带参数的请求类型划分。这篇,介绍通过github上的API,来举例一个params参数接口的演示。先找到如下图位置

分享到:

栏目导航

推荐阅读

热门阅读