中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 開發技術 > 
  • Python3實現爬取指定百度貼吧頁面并保存頁面數據生成本地文檔的方法

Python3實現爬取指定百度貼吧頁面并保存頁面數據生成本地文檔的方法

發布時間:2020-10-13 13:40:06 來源:腳本之家 閱讀:163 作者:wangbowj123 欄目:開發技術

分享給大家供大家參考,具體如下:Python3實現爬取指定百度貼吧頁面并保存頁面數據生成本地文檔的方法。分享給大家供大家參考,具體如下:

首先我們創建一個python文件, tieba.py,我們要完成的是,輸入指定百度貼吧名字與指定頁面范圍之后爬取頁面html代碼,我們首先觀察貼吧url的規律,比如:

百度貼吧LOL吧第一頁:http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=0

第二頁: http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=50

第三頁: http://tieba.baidu.com/f?kw=lol&ie=utf-8&pn=100

發現規律了吧,貼吧中每個頁面不同之處,就是url最后的pn的值,其余的都是一樣的,我們可以抓住這個規律(kw表示貼吧名,采用url編碼)。

清楚了url規則,我們便可以利用urllib進行批量式數據爬取,代碼如下:

# -*- coding:utf-8 -*-
from urllib import request as urllib2
from urllib import parse
import random
def loadPage(url, page):
  '''
  根據url獲取服務器響應文件
  url:需要爬取的url
  '''
  print('---------正在下載頁面%d-------' % page)
  ua_list = [
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv2.0.1) Gecko/20100101 Firefox/4.0.1",
    "Mozilla/5.0 (Windows NT 6.1; rv2.0.1) Gecko/20100101 Firefox/4.0.1",
    "Opera/9.80 (Macintosh; Intel Mac OS X 10.6.8; U; en) Presto/2.8.131 Version/11.11",
    "Opera/9.80 (Windows NT 6.1; U; en) Presto/2.8.131 Version/11.11",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"
  ]
  header = random.choice(ua_list)
  request = urllib2.Request(url)
  request.add_header('User-Agent', header)
  response = urllib2.urlopen(request)
  html = response.read()
  return html
def write(html, page):
  '''
  將html文件寫入本地
  :param html: 服務器響應文件內容
  :return:
  '''
  data = html
  file_name = 'tieba{}.txt'.format(page)
  print('---------正在保存文件%s-------'%file_name)
  # 運用with open as語句使代碼更加簡潔 避免寫異常處理和文件關閉語句
  with open(file_name,'w',encoding='utf-8') as file:
    file.write(data.decode())
  print('---------success!---------')
def tiebaSpider(url, kw, begin, end):
  '''
  爬取貼吧信息
  '''
  words = {
    'kw':kw
  }
  kw = parse.urlencode(words)
  url = url % (kw)
  for page in range(begin, end + 1):
    pn = ((page-1)*50)
    ful_url = url + str(pn)
    html = loadPage(url, page)
    write(html, page)
if __name__ == '__main__':
  kw = input('請輸入爬取貼吧名:')
  beginPage = int(input('請輸入起始頁:'))
  endPage = int(input('請輸入結束頁:'))
  url = r'http://tieba.baidu.com/f?%s&pn='
  tiebaSpider(url, kw, beginPage, endPage)

控制臺結果如下:

請輸入爬取貼吧名:河南
請輸入起始頁:1
請輸入結束頁:3
---------正在下載頁面1-------
---------正在保存文件tieba1.txt-------
---------success!---------
---------正在下載頁面2-------
---------正在保存文件tieba2.txt-------
---------success!---------
---------正在下載頁面3-------
---------正在保存文件tieba3.txt-------
---------success!---------
Process finished with exit code 0

更多關于Python相關內容可查看本站專題:《Python Socket編程技巧總結》、《Python數據結構與算法教程》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》、《Python入門與進階經典教程》及《Python文件與目錄操作技巧匯總》

希望本文所述對大家Python程序設計有所幫助。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

井冈山市| 拜城县| 上饶市| 车险| 浮梁县| 日照市| 古丈县| 习水县| 南开区| 邮箱| 宝兴县| 巫溪县| 文登市| 稷山县| 石楼县| 岳阳市| 沅江市| 德惠市| 曲麻莱县| 竹溪县| 扎兰屯市| 定结县| 淮安市| 张家界市| 军事| 南京市| 神农架林区| 蚌埠市| 大新县| 凭祥市| 南溪县| 台中县| 白河县| 北碚区| 泰安市| 芜湖市| 文水县| 巫山县| 五莲县| 大荔县| 即墨市|