我晕了
难道今天就要告一段落了吗
今天。。。只跟着老师爬了。。。一个猫眼电影。。。第二个。。爬头条那个我。。。看一半看不懂就开始玩了。。。我晕。。
中间跳了挺多的
【再次声明】代码大量来自bilibili网课:零基础入门python3爬虫 少量来自百度百科
DAY5
今天想开始直接爬虫
我们先要有整体的逻辑 就是爬虫的步骤↓
首先→爬取单个网页(按照老师的课程 第一次先用requests库)
细节:
首先用requests库里的get请求,必要时里面要加请求头,让网站认为是浏览器请求的,然后通过状态码来判断返回,记住还要加一个异常处理。
其次→解析爬取的网页(第一次课用正则表达式 因为我前面的偷懒可能还要回去看正则表达式的视频)
蓝后→保存到文件
最后→开启循环 把几页的内容全存下来
跟着老师爬了猫眼电影排行榜top100
import requests
import re
from requests.exceptions import RequestException
import json
#爬取单个网页
def get_onepage(url):
try:
headers = {
'User-agent':
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'
} #加入请求头使得网页认为是浏览器发送的请求
response = requests.get(url,headers=headers)
if response.status_code == 200:
return response.text
return None
except RequestException: #异常处理
return None
def parse_onepage(html):
#新引入正则表达式
pattern = re.compile('<dd>.*?board-index.*?">(\d+)</i>.*?title="(.*?)".*?data-src="(.*?)".*?'
+'class="star">(.*?)</p>.*?time">(.*?)</p>.*?</dd>',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'排名':item[0],
'片名':item[1],
'封面链接':item[2],
'主演':item[3].strip()[3:],
'上映时间':item[4].strip()[5:]
}
def write_in(content):
with open('1.txt','a',encoding = 'utf-8') as f:
f.write(json.dumps(content,ensure_ascii=False) + '\n')
f.close()
def main(offset):
url='https://maoyan.com/board/4?offset='+str(offset)
html = get_onepage(url)
for item in parse_onepage(html):
print(item)
write_in(item)
if __name__ == '__main__':
for i in range(10):
main(i*10)