python3 Webクローラーは、本物の猫の目のTOP100を開発します

私は時折、時にはそれが書くだろうと思い、時々 、時間がない、彼はCOLLATEと要約すると使用していなかったことが判明し、時にはそれが学習されます後、および整理するのが面倒。しかし、その後忘れてた、非常に高速であり、時間の前に物事を探して必ずしも容易ではありません。しかし、人生は、常にこの世界で休暇何かを与えます。= -物事を学ぶことで自分自身を取得し、思考がフラグ[ヘッド]ので、この法律では、記録されている、=を書く習慣を要約して開発しています。
最近開発された戦闘CUI清は、映画情報ののpython3猫の目のTOP100をクロール教師のウェブクローラを見ていました。一般的には、get要求モジュールを使用して、2つのステップ、1)の方法をクロールするステップは、ウェブページ情報を要求し、正規表現の2)使用が情報を一致させます。支障をステップしないが、時間の理由により、HTTPプロトコルの代わりにHTTPSプロトコルが、プロトコルはHTTPS、HTTPリクエストの場合にも使用することができるが、HTTPSリクエストにジャンプするが、これはほとんど影響を持っています。もう一つは、フィールドがテキストとしてヘッダを設定されている場合、サーバは爬虫類を識別するための猫の目になるということです、結果のページには、米国のミッション検証センターです。

1)要求ページ
のヘッダー内のテキストは、それがブラウザや爬虫類を認識しませんリクエストヘッダフィールドが設定されているすべての最高ので、猫の目ので、User-Agentフィールドを設定しますが、爬虫類として識別されます。要求が初めてのクッキーではないため、クッキーのフィールドを設定しないでください。
ここに画像を挿入説明2)定期的な抽出
定期エキス最も重要なことは、正規表現です。

<dd>.*?<a href="(.*?)" title="(.*?)".*?<p class="star">(.*?)</p>.*?<p class="releasetime">(.*?)</p>.*?</dd>

これは、抽出された私は、情報と文化を抽出異なる情報が、より多くの不必要な多くの情報よりも、あまりにも特定のを感じ、非常に未熟まだ、私は正規表現を書き始めで、エキスのみのhref、フィルム名、主演、上映時間。

<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?a.*?>(.*?)</a>

これは、正規表現のテキスト、私はアンカーの前の最後の試合についての最初の発見情報であり、その後、アンカーから、必要な情報に一致するように理解し、そこから原則を書く正規表現です。

<dd>.*?href="(.*?)" title="(.*?)".*?star.*?>(.*?)<.*?releasetim.*?>(.*?)<.*?</dd>

この記事は、正規表現の方法に従って書かれています

コードセクション

import requests, re

main_url = 'https://maoyan.com/board/4'
films=[]

def getOnePage(url):
    headers = {'User-Agent':"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36",
    'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
    'Accept-Encoding':'gzip, deflate, br',
    'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Cache-Control': 'no-cache',
    'Host':'maoyan.com',
    'Pragma':'no-cache',
    'Connection':'keep-alive',
    'Upgrade-Insecure-Requests':'1'
    }
    respond = requests.get(url, headers=headers)
    pattern ='<dd>.*?href="(.*?)" title="(.*?)".*?star.*?>(.*?)<.*?releasetim.*?>(.*?)<.*?</dd>'
    result = re.findall(pattern, respond.text, re.S)
    print(result)
    films.extend(result)

def main():
    all_url=[]
    all_url.append(main_url)
    for i in range(10,100,10):
        tmp = main_url+'/?offset='+str(i)
        all_url.append(tmp)
    for u in all_url:
        getOnePage(u)
    
    # print(films[20])
    with open('maoyan.txt','w') as f:
        line =''
        for i in range(100):
            # print(films[i])
            line_list= list(films[i])
            line_list[2] = line_list[2].strip()
            line = '         '.join(line_list)+'\n'
            f.write(line)

main()

公開された15元の記事 ウォンの賞賛3 ビュー10000 +

おすすめ

転載: blog.csdn.net/biziwaiwai/article/details/104324642