# -*- coding: utf-8 -*- """ Created on Sun Dec 12 18:56:30 2021 @author: davis """ #试一下输入豆瓣网址然后就能自动分析网页上的书名/电影名和评分进行统计 import urllib.request import re def openurl(url): proxy_support=urllib.request.ProxyHandler({'http':'182.84.144.73'})#找一个代理ip opener = urllib.request.build_opener(proxy_support)#定义一个opener opener.addheaders=[('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0')]#opener的一个headers urllib.request.install_opener(opener) head={} head['Connection']='close' req=urllib.request.Request(url) #先request得到对象 response=urllib.request.urlopen(req) #然后得到response对象 html=response.read().decode('utf-8')#然后进行解码得到我们要的格式 return html def get_book(html): p=r'[^/]+<'#正则表达式,规定了我需要爬取的链接的格式,正则表达式,加括号没影响,多个括号代表多个条件 #我一直以为[^"]的意思是任何字符,结果不是的, 意思是不包含"的任何字符,只要改成不包含反斜杠,就会搜索到电影名为止了 moviename=re.findall(p,html) q=r'property="v:average">[0-9].[0-9]<' moviescore=re.findall(q,html) for j in range(0,25): text1=str(moviename[j]) text11=text1.lstrip('') text12=text11.rstrip('<') text2=str(moviescore[j]) text21=text2.lstrip('property="v:average">') text22=text21.rstrip('<') with open('C://Users/刘子豪/Desktop/doubanmovie.txt','a',encoding='utf-8') as f:#在python当中需要用到的路径符号是反斜杠,a是继续写,w是覆盖 text = 'n'+text12+' '+text22 f.write(text) def get_page(html): page=r'start=[0-9]{2,3}' #Newer Comments" href="https://book.douban.com/top250?start=25 page_list=re.findall(page,html) page_url='https://movie.douban.com/top250?'+page_list[-2]#他这个本来都是取第一个,不对不对,豆瓣应该有额外的规则 return page_url if __name__ == '__main__': url = 'https://movie.douban.com/top250?start=0' i=0 while i != 10: html=openurl(url) get_book(html) url=get_page(html) i=i+1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)