1. 程式人生 > >requests與BeautifulSoup爬取嗅事百科

requests與BeautifulSoup爬取嗅事百科

爬取嗅事百科


今天我們利用requests和bs4來爬取嗅事百科的內容。


爬取步驟:

  • 分析網頁結構
  • 利用request來獲取網頁內容
  • 利用bs4來篩選網頁內容
  • 列印或者儲存網頁內容

接下來,我們一步一步來完成這些事
1.分析網頁結構
在這裡插入圖片描述
由此可知,段子裡面的容都是儲存在

這個標籤下的 標籤中,所以我們可以利用bs4來進行刪選。


2.利用request來獲取網頁內容

#模擬瀏覽器
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
#獲取網頁內容
r = requests.get('http://www.qiushibaike.com', headers = headers).text

3.利用bs4來篩選網頁內容

#利用lxml解析網頁內容
soup = BeautifulSoup(r, 'lxml')
#找到所有上面的內容的標籤
divs = soup.find_all('div',attrs={'class':'content'})

4.將內容打印出來

#列印所有的內容
for div in divs:
    contents = div.span.get_text()
    print(contents)
#開啟檔案,寫入內容
   with open('C:\\Users\\Administrator\\Desktop\\11.txt','a') as f:
        f.write(contents)

總程式:

import requests
from bs4 import BeautifulSoup


headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
r = requests.get('http://www.qiushibaike.com', headers = headers).text
soup = BeautifulSoup(r, 'lxml')

divs = soup.find_all('div',attrs={'class':'content'})
print(divs)

for div in divs:
    contents = div.span.get_text()
    with open('C:\\Users\\Administrator\\Desktop\\11.txt','a',encoding='utf-8') as f:
        f.write(contents)
    print(contents)

我們做一個比較全面的,爬取某頁的嗅事百科
看一下這兩張圖片,就知道了區別了
在這裡插入圖片描述在這裡插入圖片描述
可以看出來,url的地址是不一樣的,區別就是最後這個數字,這樣我們就很好去選擇了。
程式碼:

import requests
from bs4 import BeautifulSoup

headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
#傳入引數,第幾頁的引數
def pages(num):
    url = 'https://www.qiushibaike.com/8hr/page/'+'str(num)'
    r = requests.get(url, headers = headers).text
    soup = BeautifulSoup(r, 'lxml')

    divs = soup.find_all('div',attrs={'class':'content'})
    print(divs)

    for div in divs:
        contents = div.span.get_text()
        with open('C:\\Users\\Administrator\\Desktop\\11.txt','a',encoding='utf-8') as f:
            f.write(contents)
        print(contents)
pages(5)