哈辛考尔在哪,杰夫哈迪吸毒,班级座右铭
本项目是爬虫中最基础的,最简单的一例;
后面会有利用爬虫框架来完成更高级、自动化的爬虫程序。
此项目过程是运用requests请求库来获取html,再用正则表达式来解析从中获取所需数据。
话不多说,直接上代码,盘! (具体代码解释在代码旁边)
#请求库:requests 解析工具:正则表达式 import requests import re import json import time
def get_one_page(url): #头部的定义,自己在网页中可以获取(网页右击检查,network中的header) headers={ 'user-agent':'ozilla/5.0 (iphone; cpu iphone os 11_3 like mac os x) applewebkit/605.1.15 (khtml, like gecko) mobile/15e5216a qq/7.5.5.426 v1_iph_sq_7.5.5_1_app_a pixel/1080 core/uiwebview device/apple(iphone 8plus) nettype/wifi qbwebviewtype/1' } response=requests.get(url,headers=headers) if response.status_code==200: #只有status_code为200时才表示响应正确 return response.text return none
def parse_one_page(html): #re.compile是把正则化字符串对象化,方便复用。 pattern=re.compile('<li>.*?<em\sclass.*?>(.*?)</em>.*?<img.*? src="(.*?)".*?title">(.*?)<.*?<p class="">(.*?)</p>.*?rating_num.*?>(.*?)<.*?<span>(.*?)</span>.*?.*?inq">(.*?)<.*?</li>',re.s) items=re.findall(pattern,html) #列表形成字典(通过findall获取的数据是一条条记录,形成一个列表) for item in items: yield{'index':item[0], #电影排名 'image':item[1], #电影海报 'title':item[2], #电影名称 'actor':item[3], #电影导演,主演 'score':item[4], #评分 'people_num':item[5], #多少人评价 'evaluate':item[6] #影评 }
def write_to_file(content): #创建或打开result.txt以追加的读写方式写入数据 with open('result.txt','a',encoding='utf-8') as f: print(json.dumps(content,ensure_ascii=false)) #json.dumps()用于把字典序列化,方便写入txt文件 f.write(json.dumps(content,ensure_ascii=false)+'\n')
def main(start): #更换url中的start值来切换页面,具体更换的数值要更具实际情况而变 url='https://movie.douban.com/top250?start='+str(start)+'&filter=' html=get_one_page(url) for item in parse_one_page(html): write_to_file(item) if __name__=='__main__': for i in range(10): start=i*25 main(start) time.sleep(1)#防止请求过快被网页检测出来,休眠1秒
本文所有代码复制可以直接运行欧!
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Python 实现将numpy中的nan和inf,nan替换成对应的均值
python爬虫把url链接编码成gbk2312格式过程解析
网友评论