Basic認証を通したURLのテキスト取得
Python2にてrequestsとbs4使用する
あるcsvファイルからurlを取得し、別のcsvファイルにGetしたhtml結果を出力する。
.find("a")
でも、.a
でも取得可能らしい。
import urllib2 import requests from bs4 import BeautifulSoup import csv top_level_url = "http://[top_level_url名]/" username = "[user名]" password = "[passwd名]" password_mgr = urllib2.HTTPPasswordMgrWithDefaultRealm() password_mgr.add_password(None, top_level_url, username, password) handler = urllib2.HTTPBasicAuthHandler(password_mgr) opener = urllib2.build_opener(handler) urllib2.install_opener(opener) csv_reader = csv.reader(open( '[読み込みcsv名]', "rb"), delimiter=",", quotechar='"') # 読み込みcsvの一列目に取得したいテキストのあるURL名を入力 with open('[書き込みcsv名]', 'awb') as f: for row in csv_reader: csvWriter = csv.writer(f) try: if row[0] == "": csvWriter.writerow([0]+[i for i in row]) continue r = requests.get(row[0]) soup = BeautifulSoup(r.text.encode(r.encoding)) labels = soup.find(id='[id名]').find_all('[lavel名]') listdata = [i for i in row] for el in labels: listdata.append(el.text.encode("utf-8")) count_list = len(listdata)-len(row) csvWriter.writerow([count_list]+listdata) except Exception as e1: print e1 listdata.append(message.text.encode('utf-8')) csvWriter.writerow([0]+listdata)