一、request请求库爬取豆瓣电影信息
-请求url
https://movie.douban.com/top250
-请求方式
GET
-请求头
user-agent
cookies
'''
爬取豆瓣电影相关信息
电影名称、电影url、电影导演、电影主演、电影年份、
电影类型、电影评分、电影评论、电影简介、电影排名
分析每页的url
第一页
https://movie.douban.com/top250?start=0&filter=
第二页
https://movie.douban.com/top250?start=25&filter=
'''
#爬虫三部曲
#1.发送请求
importrequests
defget_page(url):
reponse=requests.get(url)
#print(reponse.text)
returnreponse
#2.解析数据
importre
defparse_index(html):
movie_list=re.findall('<divclass="item">.*?<emclass="">(.*?)</em>.*?<ahref="(.*?)">.*?<spanclass="title">(.*?)</span>.*?<pclass="">.*?导演:(.*?)主演:(.*?)<br>(.*?)</p>.*?<spanclass="rating_num"property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<spanclass="inq">(.*?)</span>',html,re.S)
returnmovie_list
'''
电影排名、电影url、电影名称、电影导演、电影主演、电影年份/电影类型、电影评分、电影评论、电影简介
<divclass="item">.*?<emclass="">(.*?)</em>.*?<ahref="(.*?)">.*?<spanclass="title">(.*?)</span>.*?<pclass="">.*?导演:(.*?)主演:(.*?)<br>(.*?)</p>.*?<spanclass="rating_num"property="v:average">(.*?)</span>.*?<span>(.*?)人评价</span>.*?<spanclass="inq">(.*?)</span>
'''
#3.保存数据
defsave_data(movie):
#电影排名、电影url、电影名称、电影导演、电影主演、电影年份/电影类型、电影评分、电影评论、电影简介
top,m_url,name,daoyan,actor,year_type,point,commit,desc=movie
daoyan=daoyan.replace(" ","")
year_type=year_type.replace(" / ","")
data=f'''
=======欢迎观赏=======
电影排名:{top}
电影url:{m_url}
电影名称:{name}
电影导演:{daoyan}
电影主演:{actor}
年份类型:{year_type}
电影评分:{point}
电影评论:{commit}
电影简介:{desc}
=======谢谢观赏=======
\n
\n
'''
print(data)
withopen('doban_top250.txt','a',encoding='utf-8')asf:
f.write(data)
print(f'电影:{name}写入成功')
if__name__=='__main__':
#拼接所有主页
num=0
forlineinrange(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)
formovieinmovie_list:
#3.保存数据
save_data(movie)
二selenium请求库
1、什么是selenium?
期初是一个自动化测试工具,原理是驱动
浏览器执行一些一定好的操作。爬虫本质
上就是模拟浏览器,所以可以使用它来做爬虫。
2、为什么要使用selenium?
优点:
-执行js代码
-不需要分析复杂的通信流程
-对浏览器做弹窗、下拉等操作
-*****获取动态数据
-***破解登录验证
缺点:
-执行效率低
3、安装与使用
1.安装selenium请求库:
pip3installselenium
2.必须安装浏览器
"谷歌"或者火狐
3.安装浏览器驱动
http://npm.taobao.org/mirrors/chromedriver/2.38/
windows:
下载win32驱动
selenium基本使用,实例如下:
fromseleniumimportwebdriver#web驱动
fromselenium.webdriver.common.byimportBy#按照什么方式查找,By.ID,By.CSS_SELECTOR
fromselenium.webdriver.common.keysimportKeys#键盘按键操作
fromselenium.webdriver.supportimportexpected_conditionsasEC#和下面WebDriverWait一起用的
fromselenium.webdriver.support.waitimportWebDriverWait#等待页面加载某些元素
importtime
importtime
#方式一:通过驱动打开浏览器
#driver=webdriver.Chrome(r'驱动的绝对路径/webdriver.exe')
#方式二:把webdriver.exe驱动放到python解释器安装目录/Scripts文件夹中
#python解释器安装目录/Scripts配置环境变量
#python解释器安装目录配置环境变量
driver=webdriver.Chrome()
try:
driver.get('https://www.jd.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()
selenium选择器,实例如下:
''''''
fromseleniumimportwebdriver#web驱动
fromselenium.webdriver.common.keysimportKeys#键盘按键操作
importtime
importtime
driver=webdriver.Chrome()
try:
#隐式等待:需要在get之前调用
#等待任意元素加载10秒
driver.implicitly_wait(10)
driver.get('https://www.baidu.com/')
#显式等待:需要在get之后调用
time.sleep(5)
'''
===============所有方法===================
element是查找一个标签
elements是查找所有标签
'''
#自动登录百度start
#1、find_element_by_link_text#通过链接文本去找
login_link=driver.find_element_by_link_text('登录')
login_link.click()#点击登录
time.sleep(1)
#2、find_element_by_id#通过id去找
user_login=driver.find_element_by_id('TANGRAM__PSP_10__footerULoginBtn')
user_login.click()
time.sleep(1)
#3、find_element_by_class_name
user=driver.find_element_by_class_name('pass-text-input-userName')
user.send_keys('*****')
#4、find_element_by_name
pwd=driver.find_element_by_name('password')
pwd.send_keys('*****')
submit=driver.find_element_by_id('TANGRAM__PSP_10__submit')
submit.click()
#end
#5、find_element_by_partial_link_text
#局部链接文本查找
login_link=driver.find_element_by_partial_link_text('登')
login_link.click()
#6、find_element_by_css_selector
#根据属性选择器查找元素
#.:class
##:id
login2_link=driver.find_element_by_css_selector('.tang-pass-footerBarULogin')
login2_link.click()
#7、find_element_by_tag_name
div=driver.find_elements_by_tag_name('div')
print(div)
time.sleep(20)
finally:
#关闭浏览器释放操作系统资源
driver.close()
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h54669.shtml