Python Beautiful Soup+requests實現爬蟲

HuangZhang_123發表於2017-02-27

歡迎加入學習交流QQ群:657341423


Python 爬蟲庫大概有 標準庫 urllib 或第三方庫 requests,scrapy,BeautifulSoup 用於獲取資料網站較多。scrapy其實是框架形式,適用於大規模爬取,requests就是通過http的post,get方式實現爬蟲。Beautiful Soup 是一個可以從HTML或XML檔案中提取資料的Python庫
本次介紹Beautiful Soup+requests實現爬蟲,這方法結合最簡單容易上手。requests主要用get獲取html資訊,Beautiful Soup對Html內容進行篩選,獲取自己想要的內容。
Beautiful Soup安裝:
pip install beautifulsoup4
安裝完後還需安裝
pip install lxml
pip install html5lib

requests安裝
pip install requests

requests獲取網站Html內容

import requests
from bs4 import BeautifulSoup

r = requests.get(url='https://www.baidu.com/')    # 最基本的GET請求
print(r.status_code)    # 獲取返回狀態
r.encoding = 'utf-8' #沒有的話,中文會顯示亂碼
print(r.text)

使用BeautifulSoup解析這段程式碼

soup = BeautifulSoup(r.text,"html.parser")
print(soup.prettify())

執行結果:

這裡寫圖片描述

這個涉及到編碼的問題了。網上找了很多資料都無法解決。最後發現,這個問題是print的問題。
在程式碼中加入,即可解決

import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')

如果要將soup.prettify()寫入txt

f =open("ttt.txt","w",encoding='utf-8')
f.write(soup.prettify())

完整程式碼

from bs4 import BeautifulSoup
import requests
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')


page = requests.get('https://www.baidu.com/')
page.encoding = "utf-8"

soup = BeautifulSoup(page.text,"html.parser")
print(soup.prettify())

f =open("ttt.txt","w",encoding='utf-8')
f.write(soup.prettify())

BeautifulSoup官網文件
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html


歡迎加入學習交流QQ群:657341423

相關文章