from seleniumimport webdriver
import requests
from bs4import BeautifulSoup
import csv
import ssl
import re
ssl._create_default_https_context = ssl._create_unverified_context
def get_newURL(surname):
browser = webdriver.PhantomJS(executable_path='/Users/viemaxwei/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs')
browser.get("http://search.library.sh.cn/jiapu/bSearch.htm")
input_str = browser.find_element_by_name('expr')
input_str.send_keys(surname)
browser.find_element_by_xpath('//*[@value="檢索"]').click()
browser.switch_to.window(browser.window_handles[1])
# time.sleep(1)
global newurl
newurl = browser.current_url
browser.close()
# return newURL
# browser = webdriver.PhantomJS(executable_path='/Users/viemaxwei/Downloads/phantomjs-2.1.1-macosx/bin/phantomjs')
# browser.get("http://search.library.sh.cn/jiapu/bSearch.htm")
# input_str = browser.find_element_by_name('expr')
# input_str.send_keys("κ??")
def get_current_data(url):
session = requests.Session()
headers = {"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5)AppleWebKit 537.36 (KHTML, like Gecko) Chrome",
"Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"}
html = session.get(url, headers=headers)
html.encoding ="GBK"
html_code = html.text
bs = BeautifulSoup(html_code, "lxml")
content_list = bs.find_all("td")
content_list_1 = bs.find("H3")
global data
data = []
try:
for contentin content_list:
content = content.get_text()
data.append(content)
for iin data:
if i =='' or i =='*' or i ==' ':
data.remove(i)
except:
content = content_list_1
data.append(content)
def get_next_page(new_url):
global browser_1
browser_1 = webdriver.Firefox(executable_path='/Users/viemaxwei/Downloads/geckodriver')
# browser_1 = webdriver.PhantomJS()
browser_1.get(new_url)
browser_1.find_element_by_xpath("http://*[@value='下頁']").click()
browser_1.switch_to.window(browser_1.window_handles[0])
global url_new
url_new = browser_1.current_url
browser_1.close()
# def close_all_browsers():
# browser.quit()
# browser_1.quit()
with open("/Users/viemaxwei/Downloads/surname.csv", "rt")as sur:
cin = csv.reader(sur)
surname = [ifor iin cin]
surname_dict =dict(surname)
surname_set = {}
for tin surname_dict:
get_newURL(surname_dict[t] +"氏")
print("現(xiàn)在自動檢索" + surname_dict[t] +"氏數(shù)據(jù)")
print("-------------------------------------")
get_current_data(newurl)
all_data = data.copy()
# 計算需要爬取的網(wǎng)頁數(shù)
total = all_data[1]
pattern = re.compile('[0-9]+')
match = pattern.search(total)
total_true =int(match.group())
sheets = total_true//10 +1
print("正在獲取第1頁數(shù)據(jù)... (總共%d頁)" % sheets)
get_next_page(newurl)
print("正在獲取第2頁數(shù)據(jù)... (總共%d頁)" % sheets)
get_current_data(url_new)
all_data.extend(data)
count =2
while True:
try:
get_next_page(url_new)
get_current_data(url_new)
count +=1
print("正在獲取第%d的數(shù)據(jù)... (總共%d頁)" % (count, sheets))
all_data.extend(data)
except:
surname_set[surname_dict[t]] = all_data
browser_1.close()
break
print("爬取" + surname_dict[t] +"氏完成 ?。?!")
print("--------------------------")
continue
上海圖書館-家譜數(shù)據(jù)庫-數(shù)據(jù)爬蟲
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- 表的設(shè)計及字段說明 lib_user 其他自己擴展 lib_book $E = mc^2$ 其他自己擴展 lib_...
- 前言:Realm數(shù)據(jù)庫是基于C++編寫的一個不同于SQLite數(shù)據(jù)庫的數(shù)據(jù)庫引擎,是一個可以替代SQLite以及O...
- 當(dāng)別人還在沉睡時,你就出發(fā)吧。當(dāng)別人還在努力時,你就到達(dá)吧。 無論是南方還是北方,冬季都已經(jīng)悄悄來臨。清晨,推開窗...
- 最近追電視劇《軍師聯(lián)盟》的空檔間,同時追看了以前落下的《新三國》,被一個人的命運深深牽動心弦,這個人就是東漢的末代...