GlidedSky爬蟲網站練習基礎1

GlidedSky爬蟲網站練習第一關

無心中看到一個很不錯的爬蟲練習網站:css

GlidedSky爬蟲練習網站
是一個很不錯的練習網站,可是先須要註冊一下。
第一關是把網頁中的數據求和,由於格式統一,因此能夠用不少方法實現,
在使用GET方法時,要加入User-Agent和cookie。
*介紹了re,bs4,xpath,css,selenium自動化方法爬取信息。
*selenium自動化測試參考文獻




html

import requests
import re
from fake_useragent import UserAgent  # 導入隨機頭headers
from lxml import etree
from bs4 import BeautifulSoup

def get_html(url):
    # 隨機生成headers
	headers = {'User-Agent': UserAgent().random,
				'cookie': '你的cookie'}
	try:
		# 獲取url響應
		response = requests.get(url, headers=headers)
		# 不是200,產生異常
		response.raise_for_status()
		# 將編碼設置爲文章內容編碼
		response.encoding = response.apparent_encoding
		return response.text
	except:
		return

def html_infos(html):
	num = 0
	# 正則匹配
	# infos爲獲取到數據信息列表
	infos = re.findall(r'<div class="col-md-1">(.*?)</div>', html, re.S)
	# 循環列表,逐一取出相加
	for info in infos:
		num += int(info.strip())
	print(num)

	# bs4匹配
	soup = BeautifulSoup(html, 'lxml')
	infos = soup.find_all('div', class_="col-md-1")
	for info in infos:
		info = info.text.strip()
		num += int(info)
	print(num)

	# xpath匹配
	infos_txt = etree.HTML(html)  # 解析html
	infos = infos_txt.xpath('//div[@class="col-md-1"]')
	for info in infos:
		info = info.text.strip()
		num += int(info)

	# css匹配
	infos_txt = etree.HTML(html)
	infos = infos_txt.cssselect('.row>.col-md-1')
	for info in infos:
		num += int(info.text.strip())
	print(num)
	


if __name__=='__main__':
	url = 'http://www.glidedsky.com/level/web/crawler-basic-1'
	# url返回text賦給html
	html = get_html(url)
	html_infos(html)

-------------------------------------------------------------------------------------
 # 如下是用selenium自動化爬取網頁
 from selenium import webdriver
 from selenium.webdriver.common.by import By  # 用於指定HTML文件中的DOM標籤元素
 from selenium.webdriver.support.ui import WebDriverWait  # 等待網頁加載完成
 from selenium.webdriver.support import expected_conditions as EC  # 指定等待頁面加載結束

driver = webdriver.Chrome()  # 實例化瀏覽器對象
url = 'http://www.glidedsky.com/login'
driver.get(url)  # 打開網頁
driver.maximize_window()  # 全屏顯示
#等待頁面加載完成
WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'form-control')))
#登陸頁面,實現selenium自動化登陸
#須要提早在網站註冊個帳號
user = driver.find_element_by_id('email')
user.click()
user.send_keys('你的帳號')
password = driver.find_element_by_id('password')
password.click()
password.send_keys('你的密碼')
#點擊登陸按鈕
login = driver.find_element_by_css_selector(
    '#app > main > div.container > div > div > div > div.card-body > form > div.form-group.row.mb-0 > div > button')
login.click()

#進入爬蟲第一關練習
spider1 = driver.find_element_by_xpath('//[@id="app"]/main/div[1]/div/div/table/tbody/tr[1]/td[1]/a') 
spider1.click()
# 點擊待爬取頁面
url1 = driver.find_element_by_xpath('//*[@id="app"]/main/div[1]/div/div/div/div/a').get_attribute('href')
driver.get(url1)
num = 0
infos = driver.find_elements_by_class_name('col-md-1') 
for info in infos:
    info = info.text.strip()
    num += int(info)
print(num)  # 以上就是selenium自動化爬取頁面,須要等待幾秒
相關文章
相關標籤/搜索