猫眼网基础爬虫-小白的第一次爬虫经历

以下为最近爬取猫眼TOP100榜单的代码:

import requests
import re
import json
import datetime
import time

def get_one_page(url):
    #获取网页
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'
    }
    response = requests.get(url,headers=headers,)
    #此处一定要加一个headers=headers来模拟浏览器发送请求
    if response.status_code==200:
        return response.text
    return None

# main()
def parse_one_page(html):
    #使用正则表达式抓取网页信息
    pattern = re.compile('
.*?board-index.*?>(.*?).*?data-src="(.*?)".*?name.*?}">' '(.*?).*?">(.*?)

.*?">(.*?)

.*?integer">(.*?).*?">(.*?)',re.S) items = re.findall(pattern,html) for item in items: yield { 'index':item[0], 'img':item[1], 'title':item[2], 'actor':item[3].strip()[3:] if len(item[3])>3 else '', 'time':item[4].strip()[5:] if len(item[4])>5 else '', 'score':item[5].strip()+item[6].strip() } #迭代生成器,相当于依次生成了一个列表 # dict = { # 'index':item[0], # 'img':item[1], # 'title':item[2], # 'actor':item[3].strip()[3:] if len(item[3])>3 else '', # 'time':item[4].strip()[5:] if len(item[4])>5 else '', # 'score':item[5].strip()+item[6].strip() # } # print(dict) # print(item) def write_to_file(context): with open('result.txt','a',encoding='utf-8') as f: #以附加模式打开文件result.txt f.write(json.dumps(context,ensure_ascii=False)+'\n'+str(datetime.datetime.now())) '''json.dumps,将文件装换为json格式写入,ensure_ascii=False保证输出的结果是中文形式而不是Unicode编码, 末尾添加爬取时系统时间 ''' def main(offset): #设置形参offset url = 'http://maoyan.com/board/4?offset='+str(offset) html = get_one_page(url) # print(html) for item in parse_one_page(html): print(item) write_to_file(item) if __name__ == '__main__': for i in range(10): #传入offset参数 main(offset = i*10) time.sleep(1)

代码参考至网络爬虫开发实战--崔庆才

你可能感兴趣的:(python,爬虫)