2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 猫眼网基础爬虫-小白的第一次爬虫经历

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

时间:2023-09-23 23:13:13

相关推荐

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

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

import requestsimport reimport jsonimport datetimeimport timedef 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.textreturn None# main()def parse_one_page(html):#使用正则表达式抓取网页信息pattern = pile('<dd>.*?board-index.*?>(.*?)</i>.*?data-src="(.*?)".*?name.*?}">''(.*?)</a>.*?">(.*?)</p>.*?">(.*?)</p>.*?integer">(.*?)</i>.*?">(.*?)</i>',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.txtf.write(json.dumps(context,ensure_ascii=False)+'\n'+str(datetime.datetime.now()))'''json.dumps,将文件装换为json格式写入,ensure_ascii=False保证输出的结果是中文形式而不是Unicode编码,末尾添加爬取时系统时间 '''def main(offset):#设置形参offseturl = '/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)

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。