python+requests抓取貓眼中上映電影,re正則匹配獲取對應電影的排名,圖片地址,片名,主演及上映時間和評分html
import requests import re, json def get_html(url): """ 獲取網頁html源碼 :return: """ user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) " \ "AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" # 瀏覽器信息 headers = { "User-Agent": user_agent } r = requests.get(url, headers=headers) html = r.text # print(html) return html def parse_one_page(html): """ 正則匹配須要內容 :param html: :return: """ # 排名+圖片地址+主演+上映時間+評分 pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a' + '.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>' + '.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S) items = re.findall(pattern, html) for item in items: yield { "排名": item[0], "圖片地址": item[1], "片名": item[2], "主演": item[3].strip()[3:], "上映時間": item[4].strip()[4:], "分數": item[5] + item[6] } # 數據存儲 def write_file(content): with open("result.txt", 'a+', encoding='utf-8') as f: f.write(json.dumps(content, ensure_ascii=False) + "\n") def main(): """ 主函數 :return: """ url = "http://maoyan.com/board/4" html = get_html(url) for item in parse_one_page(html): print(item) write_file(item) if __name__ == '__main__': main()