自动化爬虫

准备工作:
1.pip install selenium==3.0.2
2.下载谷歌驱动包
chromedriver:https://registry.npmmirror.com/binary.html?path=chrome-for-testing/
geckodriver:https://github.com/mozilla/geckodrive/releases
PhantomJS:https://phantomjs.org/downloqd.html
选择起码比自己浏览器版本高的版本

测试

导入selenium的webdriver接口

from selenium import webdriver

1.创建浏览器对象 - 此时浏览器打开

browser = webdriver.Chrome()

2.输入百度地址并确认

browser.get('http://www.baidu.com/')

3.关闭浏览器

browser.quit()

=====================================

打开Chrome浏览器,并打开百度首页

导入selenium的webdriver接口

from selenium import webdriver

1.创建浏览器对象 - 此时浏览器打开

browser = webdriver.Chrome()

2.输入百度地址并确认

browser.get('http://www.baidu.com/')

3.关闭浏览器

browser.quit()

find_element_by_xpath函数 可以直接通过xpath语法进行页面内容匹配

创建浏览器对象-打开浏览器

driver=webdriver.Chrome()

打开首页

driver.get('http://www.baidu.com')

找到搜索框,并发送关键字

driver.find_element_by_xpath('//input[@id="kw"]').send_keys("mihoyo")

找到“百度一下”的按钮并点击

driver.find_element_by_xpath('//input[@id="mohoyo"]').click()

Selenium常用函数

定位节点:元素查找 - 返回值为节点对象或节点对象的列表

定位一个元素 定位多个元素 含义
find_element_by_id() find_elements_by_id() 通过元素id定位
find_element_by_name() find_elements_by_name() 通过元素name定位
find_element_by_class_name() find_elements_by_class_name() 通过类名进行定位
find_element_by_xpath() find_elements_by_xpath() 通过xpath表达式定位
find_element_by_link_text() find_elements_by_link_text() 通过完整超链接定位
find_element_by_partical_link_text() find_elements_by_partical_link_text() 通过部分链接定位
find_element_by_tag_name() find_elements_by_tag_name() 通过标签定位
find_element_by_css_selector() find_elements_by_css_selector() 通过css选择器进行定位

https://www.maoyan.com/board/4)

import time
import pandas as pd
from selenium import webdriver

def get_one_page_data(driver,id_list,movie_list,star_list,movie_time_list,score_list):
time.sleep(3)
dd_list = driver.find_elements_by_xpath('//div[@id="app"]/div/div/div[1]/dl/dd')
for dd in dd_list:
infos_list=str(dd.text).split('\n')
print(infos_list)
id_list.append(infos_list[0])
movie_list.append(infos_list[1])
star_list.append(infos_list[2])
movie_time_list.append(infos_list[3])
score_list.append(infos_list[4])
print('='*30)

def quit_driver():
time.sleep(5)
driver.quit()

if name == 'main':
driver = webdriver.Chrome()
driver.get('https://www.maoyan.com/board/4')
time.sleep(5)
id_list=[]
movie_list=[]
star_list=[]
movie_time_list=[]
score_list=[]
page_num=1

get_one_page_data(driver,id_list,movie_list,star_list,movie_time_list,score_list)
while True:
    li=driver.find_element_by_xpath('//div[@id="app"]/div/div/div[last()]/ul/li[last()]')
    li_text=str(li.text)
    if li_text=='下一页':
        page_num+=1
        li.click()
        print(f'===========正在爬取第{page_num}页===========')
        get_one_page_data(driver,id_list,movie_list,star_list,movie_time_list,score_list)
    else:
        print('结束爬')
        break
    # quit_driver(driver)

dict1={
    '排名': id_list,
    '电影名': movie_list,
    '主演': star_list,
    '上映时间': movie_time_list,
    '评分': score_list
}

df1=pd.DataFrame(dict1)
df1.to_csv('data/top.csv',index=False)

=====================================

=====================================

posted @ 2024-01-24 14:41  peculiar-  阅读(41)  评论(0)    收藏  举报