日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Python利用Beautifulsoup爬取笑話網(wǎng)站

利用Beautifulsoup爬取老牌笑話網(wǎng)站

創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括羅城網(wǎng)站建設(shè)、羅城網(wǎng)站制作、羅城網(wǎng)頁制作以及羅城網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,羅城網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到羅城省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

首先我們來看看需要爬取的網(wǎng)站:http://xiaohua.zol.com.cn/

1.開始前準(zhǔn)備

1.1 python3,本篇博客內(nèi)容采用python3來寫,如果電腦上沒有安裝python3請先安裝python3.

1.2 Request庫,urllib的升級版本打包了全部功能并簡化了使用方法。下載方法:

 
 
 
 
  1. pip install requests

1.3 Beautifulsoup庫, 是一個可以從HTML或XML文件中提取數(shù)據(jù)的Python庫.它能夠通過你喜歡的轉(zhuǎn)換器實(shí)現(xiàn)慣用的文檔導(dǎo)航,查找,修改文檔的方式.。下載方法:

 
 
 
 
  1. pip install beautifulsoup4

1.4 LXML,用于輔助Beautifulsoup庫解析網(wǎng)頁。(如果你不用anaconda,你會發(fā)現(xiàn)這個包在Windows下pip安裝報錯)下載方法:

 
 
 
 
  1. pip install lxml

1.5 pycharm,一款功能強(qiáng)大的pythonIDE工具。下載官方版本后,使用license sever免費(fèi)使用(同系列產(chǎn)品類似),具體參照http://www.cnblogs.com/hanggegege/p/6763329.html。

2.爬取過程演示與分析

 
 
 
 
  1. from bs4 import BeautifulSoup
  2. import os
  3. import requests 

導(dǎo)入需要的庫,os庫用來后期儲存爬取內(nèi)容。

隨后我們點(diǎn)開“***笑話”,發(fā)現(xiàn)有“全部笑話”這一欄,能夠讓我們***效率地爬取所有歷史笑話!

我們來通過requests庫來看看這個頁面的源代碼:

 
 
 
 
  1. from bs4 import BeautifulSoup
  2. import os
  3. import requests
  4. all_url = 'http://xiaohua.zol.com.cn/new/
  5. headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
  6. all_html=requests.get(all_url,headers = headers)
  7. print(all_html.text) 

header是請求頭,大部分網(wǎng)站沒有這個請求頭會爬取失敗

部分效果如下:

通過源碼分析發(fā)現(xiàn)我們還是不能通過此網(wǎng)站就直接獲取到所有笑話的信息,因此我們在在這個頁面找一些間接的方法。

點(diǎn)開一個笑話查看全文,我們發(fā)現(xiàn)此時網(wǎng)址變成了http://xiaohua.zol.com.cn/detail58/57681.html,在點(diǎn)開其他的笑話,我們發(fā)現(xiàn)網(wǎng)址部都是形如http://xiaohua.zol.com.cn/detail?/?.html的格式,我們以這個為突破口,去爬取所有的內(nèi)容

我們的目的是找到所有形如http://xiaohua.zol.com.cn/detail?/?.html的網(wǎng)址,再去爬取其內(nèi)容。

我們在“全部笑話”頁面隨便翻到一頁:http://xiaohua.zol.com.cn/new/5.html ,按下F12查看其源代碼,按照其布局發(fā)現(xiàn) :

每個笑話對應(yīng)其中一個

  • 標(biāo)簽,分析得每個笑話展開全文的網(wǎng)址藏在href當(dāng)中,我們只需要獲取href就能得到笑話的網(wǎng)址

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. all_url = 'http://xiaohua.zol.com.cn/new/ 
    5. '
    6. headers = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    7. all_html=requests.get(all_url,headers = headers)
    8. #print(all_html.text)
    9. soup1 = BeautifulSoup(all_html.text,'lxml')
    10. list1=soup1.find_all('li',class_ = 'article-summary')
    11. for i in list1:
    12.     #print(i)
    13.     soup2 = BeautifulSoup(i.prettify(),'lxml')
    14.     list2=soup2.find_all('a',target = '_blank',class_='all-read')
    15.     for b in list2:
    16.         href = b['href']
    17.         print(href) 

    我們通過以上代碼,成功獲得***頁所有笑話的網(wǎng)址后綴:

    也就是說,我們只需要獲得所有的循環(huán)遍歷所有的頁碼,就能獲得所有的笑話。

    上面的代碼優(yōu)化后:

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. all_url = 'http://xiaohua.zol.com.cn/new/5.html 
    5. '
    6. def Gethref(url):
    7.     headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    8.     html = requests.get(url,headers = headers)
    9.     soup_first = BeautifulSoup(html.text,'lxml')
    10.     list_first = soup_first.find_all('li',class_='article-summary')
    11.     for i in list_first:
    12.         soup_second = BeautifulSoup(i.prettify(),'lxml')
    13.         list_second = soup_second.find_all('a',target = '_blank',class_='all-read')
    14.         for b in list_second:
    15.             href = b['href']
    16.             print(href)
    17. Gethref(all_url) 

    使用如下代碼,獲取完整的笑話地址url

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. all_url = 'http://xiaohua.zol.com.cn/new/5.html 
    5. '
    6. def Gethref(url):
    7.     list_href = []
    8.     headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    9.     html = requests.get(url,headers = headers)
    10.     soup_first = BeautifulSoup(html.text,'lxml')
    11.     list_first = soup_first.find_all('li',class_='article-summary')
    12.     for i in list_first:
    13.         soup_second = BeautifulSoup(i.prettify(),'lxml')
    14.         list_second = soup_second.find_all('a',target = '_blank',class_='all-read')
    15.         for b in list_second:
    16.             href = b['href']
    17.             list_href.append(href)
    18.     return list_href
    19. def GetTrueUrl(liebiao):
    20.     for i in liebiao:
    21.         url = 'http://xiaohua.zol.com.cn 
    22. '+str(i)
    23.         print(url)
    24. GetTrueUrl(Gethref(all_url))

    簡單分析笑話頁面html內(nèi)容后,接下來獲取一個頁面全部笑話的內(nèi)容:

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. all_url = 'http://xiaohua.zol.com.cn/new/5.html 
    5. '
    6. def Gethref(url):
    7.     list_href = []
    8.     headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    9.     html = requests.get(url,headers = headers)
    10.     soup_first = BeautifulSoup(html.text,'lxml')
    11.     list_first = soup_first.find_all('li',class_='article-summary')
    12.     for i in list_first:
    13.         soup_second = BeautifulSoup(i.prettify(),'lxml')
    14.         list_second = soup_second.find_all('a',target = '_blank',class_='all-read')
    15.         for b in list_second:
    16.             href = b['href']
    17.             list_href.append(href)
    18.     return list_href
    19. def GetTrueUrl(liebiao):
    20.     list = []
    21.     for i in liebiao:
    22.         url = 'http://xiaohua.zol.com.cn 
    23. '+str(i)
    24.         list.append(url)
    25.     return list
    26. def GetText(url):
    27.     for i in url:
    28.         html = requests.get(i)
    29.         soup = BeautifulSoup(html.text,'lxml')
    30.         content = soup.find('div',class_='article-text')
    31.         print(content.text)
    32. GetText(GetTrueUrl(Gethref(all_url))) 

    效果圖如下:

    現(xiàn)在我們開始存儲笑話內(nèi)容!開始要用到os庫了

    使用如下代碼,獲取一頁笑話的所有內(nèi)容!

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. all_url = 'http://xiaohua.zol.com.cn/new/5.html 
    5. '
    6. os.mkdir('/home/lei/zol')
    7. def Gethref(url):
    8.     list_href = []
    9.     headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    10.     html = requests.get(url,headers = headers)
    11.     soup_first = BeautifulSoup(html.text,'lxml')
    12.     list_first = soup_first.find_all('li',class_='article-summary')
    13.     for i in list_first:
    14.         soup_second = BeautifulSoup(i.prettify(),'lxml')
    15.         list_second = soup_second.find_all('a',target = '_blank',class_='all-read')
    16.         for b in list_second:
    17.             href = b['href']
    18.             list_href.append(href)
    19.     return list_href
    20. def GetTrueUrl(liebiao):
    21.     list = []
    22.     for i in liebiao:
    23.         url = 'http://xiaohua.zol.com.cn 
    24. '+str(i)
    25.         list.append(url)
    26.     return list
    27. def GetText(url):
    28.     for i in url:
    29.         html = requests.get(i)
    30.         soup = BeautifulSoup(html.text,'lxml')
    31.         content = soup.find('div',class_='article-text')
    32.         title = soup.find('h1',class_ = 'article-title')
    33.         SaveText(title.text,content.text)
    34. def SaveText(TextTitle,text):
    35.     os.chdir('/home/lei/zol/')
    36.     f = open(str(TextTitle)+'txt','w')
    37.     f.write(text)
    38.     f.close()
    39. GetText(GetTrueUrl(Gethref(all_url))) 

    效果圖:

    (因?yàn)槲业南到y(tǒng)為linux系統(tǒng),路徑問題請按照自己電腦自己更改)

    我們的目標(biāo)不是抓取一個頁面的笑話那么簡單,下一步我們要做的是把需要的頁面遍歷一遍!

    通過觀察可以得到全部笑話頁面url為http://xiaohua.zol.com.cn/new/+頁碼+html,接下來我們遍歷前100頁的所有笑話,全部下載下來!

    接下來我們再次修改代碼:

     
     
     
     
    1. from bs4 import BeautifulSoup
    2. import os
    3. import requests
    4. num = 1
    5. url = 'http://xiaohua.zol.com.cn/new/ 
    6. '+str(num)+'.html'
    7. os.mkdir('/home/lei/zol')
    8. def Gethref(url):
    9.     list_href = []
    10.     headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}
    11.     html = requests.get(url,headers = headers)
    12.     soup_first = BeautifulSoup(html.text,'lxml')
    13.     list_first = soup_first.find_all('li',class_='article-summary')
    14.     for i in list_first:
    15.         soup_second = BeautifulSoup(i.prettify(),'lxml')
    16.         list_second = soup_second.find_all('a',target = '_blank',class_='all-read')
    17.         for b in list_second:
    18.             href = b['href']
    19.             list_href.append(href)
    20.     return list_href
    21. def GetTrueUrl(liebiao):
    22.     list = []
    23.     for i in liebiao:
    24.         url = 'http://xiaohua.zol.com.cn 
    25. '+str(i)
    26.         list.append(url)
    27.     return list
    28. def GetText(url):
    29.     for i in url:
    30.         html = requests.get(i)
    31.         soup = BeautifulSoup(html.text,'lxml')
    32.         content = soup.find('div',class_='article-text')
    33.         title = soup.find('h1',class_ = 'article-title')
    34.         SaveText(title.text,content.text)
    35. def SaveText(TextTitle,text):
    36.     os.chdir('/home/lei/zol/')
    37.     f = open(str(TextTitle)+'txt','w')
    38.     f.write(text)
    39.     f.close()
    40. while num<=100:
    41.     url = 'http://xiaohua.zol.com.cn/new/ 
    42. ' + str(num) + '.html'
    43.     GetText(GetTrueUrl(Gethref(url)))
    44.     num=num+1 

    大功告成!剩下的等待文件下載完全就行拉!

    效果圖:


    網(wǎng)站標(biāo)題:Python利用Beautifulsoup爬取笑話網(wǎng)站
    文章鏈接:http://m.5511xx.com/article/dpsighh.html