初めての爬虫類の経験と踏んだ穴

3659 ワード

背景:実習中に爬虫類を習うと言っていたが、なかなか実現しなかった.また小説のウェブサイトの資源に登ってそれから自分で駅を建てて意外にも年を取って千万に入ることができると聞いて、最後に伏法しましたが.それからまた虎扑フォーラムに登ることができる美図を思い出して、自分にflagを立てて、年前に小さな爬虫類を完成して、2017年のために終わります.
業務説明:爬豆弁2017年映画
テクノロジー:python+bs 4+urllib
ソース:
import ssl
import json
from urllib import request
from bs4 import BeautifulSoup

def parse_one_page(html):
    soupHtml = BeautifulSoup(html, 'lxml')
    allFilms = soupHtml.find_all(class_ = 'pl2')
    for film in allFilms:
        filmName = film.find(class_ = '').span
        if None != filmName:
            strFileName = filmName.string
            print(strFileName)
            write_to_file(strFileName)

def write_to_file(content):
    with open('2017.txt', 'a', encoding='utf-8') as f:
        f.write(json.dumps(content, ensure_ascii=False) + '
'
) f.close() def main(start): try: # SSL context = ssl._create_unverified_context() page = request.urlopen(r'https://movie.douban.com/tag/2017?start='+str(start)+'&type=T', context = context).read() page = page.decode('utf-8') parse_one_page(page) except error.HTTPError as e: print(e.code()) print(e.read().decode('utf-8')) if __name__ == '__main__': for i in range(0, 49): main(i*20)

踏んだピット:1,python 3バージョンのbeautifulsoupライブラリをインストールするソリューション:pip 3 install beautifulsoup 4 2,requestsライブラリを使用すると403エラーソリューションが発生しました:requestsライブラリの代わりにurllibライブラリを使用する3,SSL証明書エラーソリューション:
context = ssl._create_unverified_context()
        page = request.urlopen(r'https://movie.douban.com/tag/2017?start='+str(start)+'&type=T', context = context).read()

4,異常処理解決策:戻り値に対して空のオブジェクトであるか否かを判断する処理5,beautifulsoupオブジェクトを構築する際にlxmlを指定し忘れたhtml解析器解決策:soupObject=BeautifulSoup(html,‘lxml’)未指定の場合はデフォルトでsoupObject=BeautifulSoup(html,‘html.parser’)6を採用し,BeautifulSoupオブジェクトに対する理解が不足する