> 技术文档 > selenium爬取图书信息

selenium爬取图书信息


一.爬取某网页某类书的全部信息(书名,作者,价格,简介)

1.导入相关的库时间库selenium库等

import timefrom selenium import webdriverfrom selenium.webdriver import Keysfrom selenium.webdriver.edge.options import Optionsfrom selenium.webdriver.common.by import By

2.先定义一个函数方便我们后面使用函数来将网页上的内容写入文件中

def get_info(driver): global page_num time.sleep(5) eles = driver.find_elements(by=By.CLASS_NAME,value=\'book_item\') for element in eles: element.click() handers = driver.window_handles driver.switch_to.window(handers[-1]) time.sleep(5) book_name = driver.find_element(by=By.CLASS_NAME,value=\'book-name\').text book_auther = driver.find_element(by=By.CLASS_NAME,value=\'book-author\').text book_summary =driver.find_element(by=By.CLASS_NAME,value=\'book-summary\').text book_price =driver.find_element(by=By.CLASS_NAME,value=\'price\').text file.write(\"书名: \"+book_name+\'\\n\'+\'作者: \'+book_auther+\'\\n\'+\'书本简介: \'+book_summary+\'\\n\'+\'价格: \'+book_price+\'\\n\'+  \"========================================\"+\'\\n\') driver.close() handers = driver.window_handles driver.switch_to.window(handers[-1]) page_num += 1

handers = driver.window_handles   查询当前网页全部标签页以列表形式返回
driver.switch_to.window(handers[-1])  将driver对象定位到最后一个标签页

3.先用创建写的方式打开一个文件,再进行一些浏览器的绑定操作,最后打开我们需要打开的网址

file = open(\"ppt图书信息.txt\",\'w\')edge_options = Options()# edge_options.add_argument(\'--headless\')edge_options.binary_location=r\"C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe\"driver = webdriver.Edge(options=edge_options)driver.get(\"网站地址\")

4.根据浏览器的检查元素功能找到搜索框对应的信息通过find_element()方法找到元素并输入信息回车

还需将driver定位到最后的标签页

driver.find_element(by= ,value=\' \').send_keys(\"ppt\"+Keys.RETURN)handers = driver.window_handlestime.sleep(3)driver.switch_to.window(handers[-1])

5.根据浏览器的检查元素功能找到”更多“这个元素对应的信息通过find_element()方法找到元素并点击

最后通过get_info()方法获取图书的全部信息并写入文件

并设置初始页数为0,在方法内会在读取后将页数加1

driver.find_element(by= ,value=\' \').click()handers = driver.window_handlesdriver.switch_to.window(handers[-1])page_num=0get_info(driver)

6,在上数步骤读完第一页后继续通过循环继续往后读取后面网页数的图书信息,可以自己观察当前所需要读取的总共页数来控制循环的读取

我们在读取完一页后还需找到网页中的下一页并点击

while True: if page_num==13: break driver.find_element(by=By.CLASS_NAME,value=\'ivu-page-next\').click() get_info(driver)file.close()