Day 29 Google Play评论爬取

今天的影片内容为爬取Google Play网页版应用程序的评论
并将前几天爬取AJAX网页(Dcard)的程序码稍微进行改良
还有引入重要的try-except陈述句,即使程序跳出错误也能够继续执行下去
Check it out!/images/emoticon/emoticon81.gif

以下为影片中有使用到的程序码

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import bs4, time


page = int(input("请输入页面向下卷动次数:"))
dirverPath = 'C:\\spider\\chromedriver.exe'
browser = webdriver.Chrome(executable_path = dirverPath)
url = 'https://play.google.com/store/apps/details?id=com.facebook.katana&hl=zh_TW&gl=US&showAllReviews=true'
browser.get(url)

number = 0
counter = 0
post_title = []

while page > counter:


    move = browser.find_element_by_tag_name('body')
    move.send_keys(Keys.PAGE_DOWN) 
    time.sleep(0.25)
     
     
    objsoup = bs4.BeautifulSoup(browser.page_source, 'lxml')
    articles = objsoup.find_all('div', jscontroller = 'H6eOGe')


    for article in articles:
        title = article.find('span', class_ = 'X43Kjb') #寻找留言昵称
        rank = article.find('div', role = 'img') #寻找评价


        if title.text not in post_title:
            number += 1
            post_title.append(title.text)
            print("留言编号:", number)
            print("留言昵称:", title.text)
            print("评价:", rank.get('aria-label')) #取得aria-label的属性值
            print("="*100)
            
            
    counter += 1
    
print(post_title)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import bs4, time


def click_text(obj):
#寻找「显示更多内容」的字串并点击
    try:
        obj.find_element_by_xpath("//span[contains(text(),'显示更多内容')]").click()       
    except:
        pass

    
page = int(input("请输入页面向下卷动次数:"))
dirverPath = 'C:\\spider\\chromedriver.exe'
browser = webdriver.Chrome(executable_path = dirverPath)
url = 'https://play.google.com/store/apps/details?id=com.facebook.katana&hl=zh_TW&gl=US&showAllReviews=true'
browser.get(url)

number = 0
counter = 0
post_title = []

while page > counter:

    move = browser.find_element_by_tag_name('body')
    move.send_keys(Keys.PAGE_DOWN)
    click_text(move)    
    time.sleep(0.5)
    
        
    objsoup = bs4.BeautifulSoup(browser.page_source, 'lxml')
    articles = objsoup.find_all('div', jscontroller = 'H6eOGe')


    for article in articles:
        title = article.find('span', class_ = 'X43Kjb') #寻找留言昵称
        rank = article.find('div', role = 'img') #寻找评价

        
        if title.text not in post_title:
            number += 1
            post_title.append(title.text)
            print("留言编号:", number)
            print("留言昵称:", title.text)
            print("评价:", rank.get('aria-label')) #取得aria-label的属性值
            print("="*100)
            
            
    counter += 1
    
print(post_title)
#显示错误
print(5 + "Hello")

print("列印成功!")
#引进try-except陈述句
try:
    print(5 + "Hello") #尝试执行此程序
except:
    print("语法错误!") #若上述程序出现错误则执行此程序
    
print("列印成功!")

本篇影片及程序码仅提供研究使用,请勿大量恶意地爬取资料造成对方网页的负担呦!
如果在影片中有说得不太清楚或错误的地方,欢迎留言告诉我,谢谢您的指教。


<<:  Day28 实作信件发送功能(1)

>>:  结语: AI平台的六个ING

[11] 建立进入页面和流程控制

这边你需要自己制作一个流程控制 不了解的话建可以画个图来确认现在在哪个流程 基本上都会回到主要操控介...

Day 20: SOLID 设计原则 — ISP (待改进中... )

「一般来说,如果你所依赖的模组包含了超过你所需要的,那就是有害的,这可能导致不必要的重新编译和重新...

权限

昨天在设定完身分验证的架构後已经可以在路由上加 auth 中介层来验证使用者的身分是否允许访问。 R...

Day 26-如何测试 terraform 之一:长 code 短 code,能过测试的 code 才是好 code

本篇翻译与讲解 terraform 官方 blog 对於 test terraform 的建议 课程...

CSS Box-Shadow

前言 写CSS还蛮常会用到阴影,使元素更具有立体感,今天就来认识一下阴影有什麽属性吧。 首先我们要先...