Loading...

简单的Python爬虫爬取网页信息

发布者 milleros - 5 个月前

前言

从一开始使用Nodejs编写爬虫爬去网页信息开始,就对爬虫感兴趣了,以为可以做很多低级但是繁琐的事情,当然,这里的低级是一方面是因为以我现在的阶段不需要爬取太多深层次的东西,另一方面则是爬虫的编写水平还跟不上,当然肯定是后者才是重点hhhh。

爬虫的原理

编写网页爬虫一般是对页面进行解析,现在百度一搜索爬虫,最多的就是爬取豆瓣电影等网站的爬虫代码。

爬虫代码

# encoding=utf-8
import requests
import time
from bs4 import BeautifulSoup

_downLoadUrl = 'https://so.gushiwen.org/mingju/'
_count = 0
_all = 200

def getMs():
    millis = int(round(time.time() * 1000))
    return millis

def downLoadPage(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.80 Safari/537.36'
    }
    data = requests.get(url,headers=headers).content
    return data

def getList(doc):
    soup = BeautifulSoup(doc,'html.parser')
    _list = soup.find('div',class_='sons')
    _pageCount = 0
    for _item in _list.find_all('div',class_='cont'):
        _pageCount += 1
        _detail = '[' + str(_pageCount) + '/' + str(_count) + ']' + _item.get_text()

        # print(_detail)
        file = open("gushiwen.txt","a")
        file.write(_detail)
        file.close()

    # global _all
    # _all = int(soup.find('label',id_='sumPage').get_text()) #获取所有页数

    page = soup.find('a',attrs={"class":"amore", "href": True}) #获取下一页
    if page:
        return _downLoadUrl + page['href'].replace('/mingju/','')
    return None

def main():
    url = _downLoadUrl
    _start = getMs()

    while url:
        global _count
        _count +=1

        doc = downLoadPage(url)
        url = getList(doc)

        print('第' + str(_count) + '页已经爬取完成,还剩' + str(_all - _count) + '页待爬取!')

        if (url == None):
            _end = getMs()
            print('爬取完成,耗时' + str(_end - _start) + '毫秒!')

if __name__ == '__main__':
    main()

相关文章

标签纵览

Python(1)VueJS(1)Nodejs(1)Linux(3)前端(2)