python2.7
selenium
chrome瀏覽器
1. 資料**
通過控制page的數值,實現網頁的跳轉。
2. 要獲取那些資訊?
逐條獲取微博頻道資訊,逐條儲存在weibo_list.txt檔案中。
3. 怎麼獲取我們需要的資訊?
使用強大的selenium工具,它可以根據元素的xpath路徑獲取相應元素的值。
在獲取之前首先要分析資料的組成以及規律性。
(1) 資料共66頁每頁20條,共1306條資料。
(2)先對比每頁第一條資料的xpath和最後一條資料的xpath;
//第一條
/html/body/div[1]/table/tbody/tr[2]/td[2]//最後一條
/html/body/div[1]/table/tbody/tr[21]/td[2]/a[1]
很容易發現規律(就不細說了)。
4. 編寫**
#-*- coding:utf-8 -*-
import unittest
import time
import re
from selenium import webdriver
from selenium.webdriver.common.keys import keys
from selenium.webdriver.common.action_chains import actionchains
#和網頁編碼charset保持一致
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
f = open("/home/xuna/桌面/res/weibo_list.txt",'w')
sum = 1
#外迴圈控制網頁跳轉
for page in range(1,67):
#url = ""+str(page)
driver = webdriver.chrome()
driver.set_window_size(200,200) #設定瀏覽器視窗的大小
driver.get(url)
#內迴圈抓取每頁的資料
for n in range(2,22):#2-21
#/html/body/div/table/tbody/tr[2]/td[2]/a/html/body/div/table/tbody/tr[21]/td[2]
#獲取元素的xpath
name_xpath = '/html/body/div/table/tbody/tr[' + str(n) + ']/td[2]'
name = driver.find_element_by_xpath(name_xpath).text
f.write(name + "\n")
print sum,name
ifsum == 1305:
break
sum = sum + 1
driver.close()
5.獲取的結果 爬取網易新聞
爬取網易新聞 在本小節的內容中呢,筆者將會給大家講述如何去過濾我們所不需要的內容。下面的例子,是本人在爬取網易新聞時,遇到的乙個小問題,在定位元素之後,進行列印的時候,出現了部分內容無法正常解析。筆者也是進行了很長時間的嘗試,請教了很多人,才得到的三種方法。我們一起來看。通過寫入檔案的方法過濾元素 ...
爬取新聞列表
獲取單條新聞的 標題 鏈結 時間 內容 點選次數,幷包裝成乙個函式。獲取乙個新聞列表頁的所有新聞的上述詳情,幷包裝成乙個函式。獲取所有新聞列表頁的 呼叫上述函式。完成所有校園新聞的爬取工作。完成自己所選其他主題相應資料的爬取工作。import requests import refrom bs4 i...
爬取新聞列表
獲取單條新聞的 標題 鏈結 時間 內容 點選次數,幷包裝成乙個函式。獲取乙個新聞列表頁的所有新聞的上述詳情,幷包裝成乙個函式。獲取所有新聞列表頁的 呼叫上述函式。完成所有新聞的爬取。import requests from bs4 import beautifulsoup res requests....