私は時折、時にはそれが書くだろうと思い、時々 、時間がない、彼は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()