国家博物馆评论selenium爬取ajax网页

1.简介

今天实验室给了任务,爬取蚂蜂窝上的中国国家博物馆的评论。一开始,我以为简单的request加bs4就给解决了。没想到request后结果如下:竟然没有内容。

评论.png

没想到request后结果如下:竟然没有内容!!!查了资料后,得知这是ajax网页,决定用selenium爬取。


request获取结果.png

2.Selenium介绍

Selenium是一个自动化测试模块,我这里不多介绍,如有兴趣,可以参考别人的资料学习。

在爬虫中,主要用到webdriver子模块来模拟浏览器活动,这样既可以获取内容,也具有一定的反反爬虫效果(对,就是这么绕口!)

下面来简单看下selenium如何使用

# 初始化
driver = webdriver.Safari()
# 请求网页
driver.get(url)
# 最大化浏览器窗口
driver.maximize_window()
# 查找元素
button = driver.find_element_by_xpath("//a[@title='后一页']")

对于查找元素,我这里使用的是x_path方法,driver提供有其他方法(请自行百度),如果你不熟悉xpath,可以参考菜鸟教程。

查找到我们想要的元素后,可以通过text方法拿到我们想要的内容。由于需要自动翻页,通过找到对应的元素,使用click方法即可。

# 获取评论
data = driver.find_elements_by_xpath("//p[@class='rev-txt']")
# 下一页按钮
button = driver.find_element_by_xpath("//a[@title='后一页']")
# 点击
button.click()

爬取过程中,我发现爬到第12页后就给我ban了。(猜想是因为一直点翻页...,所以我就加了如下内容,模仿得像人一样)。

# 获取网页顶部大标题
head = driver.find_element_by_xpath("//h1")
head.click()
time.sleep(random.uniform(1, 1.5))

3.全部代码

代码如下,我把爬取到的数据写入到了txt文件中。

from selenium import webdriver
import time
import random

file = open('国家博物馆.txt', "w")
url = "http://www.mafengwo.cn/poi/34665.html"
# 初始化
driver = webdriver.Safari()
# 请求网页
driver.get(url)
# 最大化浏览器窗口
driver.maximize_window()
# 查找元素
button = driver.find_element_by_xpath("//a[@title='后一页']")
count = 1
while True:
    print("*" * 100)
    print("第{}页".format(count))
    print("*" * 100, "\n")
    data = driver.find_elements_by_xpath("//p[@class='rev-txt']")
    for content in data:
        file.writelines(content.text.strip("\n").strip() + "\n")
        print(content.text)
    try:
        count += 1
        button = driver.find_element_by_xpath("//a[@title='后一页']")
        button.click()
        if count > 5 and random.uniform(0, 1) > 0.5:
            time.sleep(1)
            head = driver.find_element_by_xpath("//h1")
            head.click()
            time.sleep(random.uniform(1, 1.5))
        time.sleep(random.uniform(5, 9))
    except Exception as e:
        print("\n\n", e)
        print("结束!")
        break

结果:如下。进一步的,你可以利用这些评论,制作词云来进行意见分析,改善相关服务!


国家博物馆.txt

你可能感兴趣的:(国家博物馆评论selenium爬取ajax网页)