的标签,图片是一个img标签,电影名称是一个超链接,主演是一个class标签……import json
from multiprocessing import Pool
import requests
from requests.exceptions import RequestException
import re
def get_one_page(url): # 定义请求单页方法
try:
response = requests.get(url)
if response.status_code == 200: # 通过状态码判断返回结果
return response.text
return None
except RequestException: # 异常处理
return None
如果状态码等于200,则代表请求成功,返回网页内容, 其他状态码则返回None;如出现异常,则同样返回None
写上去,.*?
代表贪婪匹配,board-index
为标准符,
结尾,这样就把1这个数字匹配了,后面的以此类推def parse_one_page(html): # 利用正则表达式对网页解析
pattern = re.compile('.*?board-index.*?(\d+).*?data-src="(.*?)".*?name">
'.*?>(.*?).*?star">(.*?).*?releasetime">(.*?)'
'.*?integer">(.*?).*?fraction">(.*?).*?', 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].strip()[3:],
'time': item[4].strip()[5:],
'score': item[5] + item[6]
}
yield可以起到一个字典生成器的作用
def write_to_file(content): # 写入文件
with open('result.txt', 'a', encoding='utf-8')as f: # 追加写入
f.write(json.dumps(content, ensure_ascii=False) + '\n') # 转换成字符串
f.close()
import json
import requests
from requests.exceptions import RequestException
import re
def get_one_page(url): # 定义请求单页方法
try:
response = requests.get(url)
if response.status_code == 200: # 通过状态码判断返回结果
print(response.text)
return response.text
return None
except RequestException: # 异常处理
return None
def parse_one_page(html): # 利用正则表达式对网页解析
pattern = re.compile('.*?board-index.*?(\d+).*?data-src="(.*?)".*?name">
'.*?>(.*?).*?star">(.*?).*?releasetime">(.*?)'
'.*?integer">(.*?).*?fraction">(.*?).*?', 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].strip()[3:],
'time': item[4].strip()[5:],
'score': item[5] + item[6]
}
def write_to_file(content): # 写入文件
with open('result.txt', 'a', encoding='utf-8')as f: # 追加写入
f.write(json.dumps(content, ensure_ascii=False) + '\n') # 转换成字符串
f.close()
def main(offset): # 定义main方法
url = 'https://maoyan.com/board/4?offset=' + str(offset)
html = get_one_page(url) # 接收URL
parse_one_page(html) # 解析
for item in parse_one_page(html):
print(item)
write_to_file(item)
if __name__ == '__main__': # 执行main方法
for i in range(10):
main(i*10)