day 02 python爬虫原理2

# 今日内容
# 一 request库爬取豆瓣电影
# 请求url:
# https://movie.douban.com/top250
# 请求方式:
# url
# 请求头:
# User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36
# cookies
# 爬取豆瓣信息:
''''''
'''
电影排名,电影名称,电影url,电影导演,电影主演,
电影年份,电影类型,电影评分,电影评论,电影简介
'''
# 一 分析所有主页的url
import requests
import re
# 爬虫三部曲
# 1 发送请求
def get_page(url):
response=requests.get(url)
# print(response.txt)
return response

# 2 解析数据
def parse_index(html):
''''''
'''
电影排名,电影名称,电影url,电影导演,电影主演,
电影年份/电影类型,电影评分,电影评论,电影简介
<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">
.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>
.*?<span class="rating_num" .*?>(.*?)</span>.*?<span>(.*?)人评价</span>
.*?<span class="inq">(.*?)</span>

<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num" .*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>
'''
movie_list=re.findall('<div class="item">.*?<em class="">(.*?)</em>.*?<a href="(.*?)">.*?<span class="title">(.*?)</span>.*?导演: (.*?)主演: (.*?)<br>(.*?)</p>.*?<span class="rating_num" .*?>(.*?)</span>.*?<span>(.*?)人评价</span>.*?<span class="inq">(.*?)</span>',
html,
re.S)
return movie_list

# 3 保存数据
def save_data(movie):
# 电影排名,电影url,电影名称,电影导演,电影主演,
# 电影年份/电影类型,电影评分,电影评论,电影简介
top,m_url,name,daoyan,actor,year_type,\
point,commit,desc=movie
year_type=year_type.strip('\n')
data=f'''
============欢迎官人观赏==============
电影排名:{top}
电影名称:{m_url}
电影url:{name}
电影导演:{daoyan}
电影主演:{actor}
电影年份/电影类型:{year_type}
电影评分:{point}
电影评论:{commit}
电影简介:{desc}
==========请官人下次再来呦===========
\n
\n
'''
print(data)
with open('doupan_top250.txt','a',encoding='utf-8')as f:
f.write(data)
print(f'电影:{name}写入成功。。。')

if __name__=='__main__':
# 拼接所有主页
num=0
for line in range(10):
url=f'https://movie.douban.com/top250?start={num}&filter='
num += 25
print(url)
# 1 往每个主页发送请求
index_res=get_page(url)
# 2 解析主页获取电影信息
movie_list=parse_index(index_res.text)
for movie in movie_list:
# print(movie)
# 3 保存数据
save_data(movie)
#        二 selenium请求库
# selenium的基本使用
from selenium import webdriver    # web 驱动
from selenium.webdriver.common.by import By  # 按照什么方式查找,By.ID,By.CSS_SELECTOR
from selenium.webdriver.common.keys import Keys # 键盘按键操作
from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素

import time
# 方式一: 通过驱动打开浏览器
# driver = webdriver.Chrome(r'驱动的绝对路径/webdriver.exe')
driver=webdriver.Chrome(r'C:\Users\15858452284\Downloads/chromedriver.exe')
# 方式二: 把webdriver.exe驱动放到 python解释器安装目录/Scripts文件夹中
# python解释器安装目录/Scripts配置环境变量
# python解释器安装目录 配置环境变量
driver = webdriver.Chrome()

try:

driver.get('https://www.taobao.com/')

# 获取显式等待对象10秒
# 可以等待某个标签加载10秒
wait = WebDriverWait(driver, 10)

# 查找元素id为key
input_tag = wait.until(EC.presence_of_element_located(
(By.ID, 'key')
))

time.sleep(5)

# 在输入框内输入商品名称
input_tag.send_keys('牛仔')

# 按下键盘回车键
input_tag.send_keys(Keys.ENTER)


time.sleep(20)

finally:
   driver.close()         # 关闭浏览器,释放资源
 

猜你喜欢

转载自www.cnblogs.com/RuiZi/p/11123877.html