import requests import re def getHTMLText(url): try: headers={'User - Agent': 'Mozilla/5.0 (Window NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/77.0.3865.120 Safari/537.36 chrome-extension'} r=requests.get(url,headers=headers) r.raise_for_status() r.encoding=r.apparent_encoding return r.text except: print("Erro_get") #用于提取所需的电影信息 def parsePage(ilt,html): tlt=re.findall(r'data-title\=\".* ?\"',html) for i in range(len(tlt)): plt=eval(tlt[i].split('=')[1]) if plt in ilt: pass else: ilt.append(plt) def printInfo(ilt): print("上 海 热 映") for i in ilt: print(i) def main(): url='https://movie.douban.com/cinema/nowplaying/shanghai/' list=[] html=getHTMLText(url) parsePage(list,html) printInfo(list) main()
时间: 2024-04-28 19:19:27 浏览: 120
'''模拟浏览器头部信息'''headers = 'User-Agent': 'Mozilla/5.0 (
这段代码没有语法错误,但是有一些需要注意的问题:
1. 在 headers 中,User-Agent 后面应该有一个冒号,而不是空格。
2. 在函数 parsePage 中,应该避免使用 eval 函数,因为它会执行字符串中的代码,存在安全隐患。应该使用正则表达式提取出电影名称。
3. 在函数 printInfo 中,电影名称前面多了几个空格,可以使用字符串的 strip 方法进行去除。
修正后的代码如下:
```
import requests
import re
def getHTMLText(url):
try:
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36 chrome-extension'}
r = requests.get(url, headers=headers)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
print("Erro_get")
# 用于提取所需的电影信息
def parsePage(ilt, html):
tlt = re.findall(r'data-title="(.*?)"', html)
for i in range(len(tlt)):
plt = tlt[i]
if plt in ilt:
pass
else:
ilt.append(plt)
def printInfo(ilt):
print("上海热映")
for i in ilt:
print(i.strip()) # 去除电影名称前后的空格
def main():
url = 'https://movie.douban.com/cinema/nowplaying/shanghai/'
movie_list = []
html = getHTMLText(url)
parsePage(movie_list, html)
printInfo(movie_list)
main()
```
阅读全文