简单例子展示爬虫在不同思想下的写法

1. 普通写法

from urllib import parse

from urllib import request

name = input(' 选择您要查看的主题: ')

start = int(input(' 选择起始页: '))

end = int(input(' 选择结束页: '))

headers = {

     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "

                   "AppleWebKit/537.36 (KHTML, like Gecko)"

                   " Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"

}

base_url = 'https://tieba.baidu.com/f?kw='

for i in range(start, end + 1):

     num = (i - 1) * 50

     url = base_url + parse.quote(name) + '&ie=utf-8&pn=' + str(num)

     req = request.Request(url, headers=headers)

     response = request.urlopen(req)

     html = response.read().decode('utf-8')

     file_name = ' ' + str(i) + ' 页内容 .html'

     with open(file_name, 'w', encoding='utf-8') as file_obj:

         print(' 正在爬取第 %d ' % i)

         file_obj.write(html)

2. 函数式写法

from urllib import parse

from urllib import request

# 获取数据

def read_url(url):

     headers = {

         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "

                       "AppleWebKit/537.36 "

                       "(KHTML, like Gecko)"

                       " Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"

     }

     req = request.Request(url, headers=headers)

     response = request.urlopen(req)

     html = response.read().decode('utf-8')

     return html

# 写入数据

def write_page(file_name, html):

     with open(file_name, 'w', encoding='utf-8') as file_obj:

         file_obj.write(html)

         print(" 写入成功 ")

# 主函数,其他的都写入其中

def main():

     name = input('外汇跟单gendan5.com 选择您要查看的主题: ')

     start = int(input(' 选择起始页: '))

     end = int(input(' 选择结束页: '))

     base_url = 'https://tieba.baidu.com/f?kw='

     for i in range(start, end + 1):

         num = (i - 1) * 50

         url = base_url + parse.quote(name) + '&ie=utf-8&pn=' + str(num)

         file_name = ' ' + str(i) + ' 页内容 .html'

         html = read_url(url)

         write_page(file_name, html)

if __name__ == '__main__':

     main()

3. 面向对象写法

from urllib import parse

from urllib import request

class BaiduSpider:

     def __init__(self):

         self.headers = {

             "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) "

                           "AppleWebKit/537.36 (KHTML, like Gecko)"

                           " Chrome/90.0.4430.85 Safari/537.36 Edg/90.0.818.46"

         }

         self.base_url = 'https://tieba.baidu.com/f?kw='

     def read_page(self, url):

         req = request.Request(url, headers=self.headers)

         response = request.urlopen(req)

         html = response.read().decode('utf-8')

         return html

     def write_page(self, file_name, html):

         with open(file_name, 'w', encoding='utf-8') as file_obj:

             file_obj.write(html)

             print(" 写入成功 ")

     def main(self):

         name = input(' 选择您要查看的主题: ')

         start = int(input(' 选择起始页: '))

         end = int(input(' 选择结束页: '))

         for i in range(start, end + 1):

             num = (i - 1) * 50

             url = self.base_url + parse.quote(name) + '&ie=utf-8&pn=' + str(num)

             file_name = ' ' + str(i) + ' 页内容 .html'

             html = self.read_page(url)

             self.write_page(file_name, html)

if __name__ == '__main__':

     yes = BaiduSpider()

     yes.main()


请使用浏览器的分享功能分享到微信等