【爬虫】爬取豆瓣图书TOP250 - som_nico

通过xpath定位元素

使用xpath定位元素有好几种方法

// 是从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

 

 

 

 

#!/user/bin/env python
#coding:utf-8
#先是从selenium导入webdriver,然后用webdriver打开安装好的谷歌浏览器。
from selenium import webdriver
#打开chrom浏览器
browser =webdriver.Chrome()
#访问豆瓣
browser.get(\'https://book.douban.com/top250?icn=index-book250-all\')



#得到标题
title=browser.find_element_by_xpath("//div[@id=\'content\']//h1").text
#打印标题
print(title)
#获得当前页面图书信息的元素对象的列表,总共有25条
book_list=browser.find_elements_by_xpath("//tr[@class=\'item\']")
for ele in book_list:
    print(ele.text+"\n")

 

因为有很多条信息,所以要注意是find_elements_by_xpath哦~

 

 

 

 

 

翻页

 

定位 后页 这个元素

 

使用find_element_by_class_name来定位这一元素

#!/user/bin/env python
#coding:utf-8
#先是从selenium导入webdriver,然后用webdriver打开安装好的谷歌浏览器。
from selenium import webdriver
import time
#打开chrom浏览器
browser =webdriver.Chrome()
#访问豆瓣
browser.get(\'https://book.douban.com/top250?icn=index-book250-all\')


for i in range(10):
    #得到标题
    title=browser.find_element_by_xpath("//div[@id=\'content\']//h1").text
    #打印标题
    print(title)
    #获得当前页面图书信息的元素对象的列表,总共有25条
    book_list=browser.find_elements_by_xpath("//tr[@class=\'item\']")
    for ele in book_list:
        print(ele.text+"\n")
    #输出当前页数
    print("------------第%s页------------"%(i+1))

    #下一页
    next_page=browser.find_element_by_class_name("next").click()
    time.sleep(5)
    print("\n")

 

time库则是python的一个标准库

time sleep() 函数推迟调用线程的运行,图中的5表示推迟执行5秒

因为页面的加载需要时间,试想一下,你点击下一页以后立刻开始定位元素,而那个时候元素还没有加载完成,那么程序就容易报错了。

 

 

 

 

 

 

相关推荐:

为什么Python爬虫在解析复杂表格时推荐使用Pandas库?

pandas.read_html能自动解析HTML表格并修复合并单元格、多级表头等结构,但需合理配置match、header、skiprows等参数,并处理JS渲染、数据类型、空值等问题,否则易导致列错位、类型错误等隐患。 因为pandas.read_html能直接把HTML表格转成DataFram...

为什么Python爬虫在Linux服务器上运行效率高于Windows?

Linux内核epoll机制以O(1)复杂度高效调度海量socket,而Windows默认回退低效select层;Linux服务器精简无GUI、定时器精准、文件系统优化好、PyPI轮子编译更激进,综合性能显著优于Windows。 Linux内核对网络IO的调度更高效 Python爬虫本质是IO密集型...