上海圖書館-家譜數(shù)據(jù)庫-數(shù)據(jù)爬蟲


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

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容