我一直在研究一些Python代码,以便能够从政府网站获得社交媒体帐户的链接,以便轻松地与城市联系.我已经设法调整了一些代码在2.7中工作,它打印了给定输入网站上的facebook,twitter,linkedin和google +的所有链接.我目前遇到的问题是,我不是只在一个网页上查找链接,而是在大约200个网站的列表中,我有一个Excel文件.我没有将这些类型的列表导入Python的经验,所以我想知道是否有人可以查看代码,并建议一个正确的方法将所有这些网页设置为base_url,如果可能的话;
import cookielib import mechanize base_url = "http://www.amsterdam.nl" br = mechanize.Browser() cj = cookielib.LWPCookieJar() br.set_cookiejar(cj) br.set_handle_robots(False) br.set_handle_equiv(False) br.set_handle_redirect(True) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] page = br.open(base_url, timeout=10) links = {} for link in br.links(): if link.url.find('facebook')>=0 or link.url.find('twitter')>=0 or link.url.find('linkedin')>=0 or link.url.find('plus.google')>=0: links[link.url] = {'count': 1, 'texts': [link.text]} # printing for link, data in links.iteritems(): print "%s - %s - %s - %d" % (base_url, link, ",".join(data['texts']), data['count'])
Bhargav.. 5
你提到你有一个包含所有网站列表的excel文件吗?因此,您可以将excel文件导出为一个csv
文件,然后您可以从python代码中读取值.
以下是有关此内容的更多信息.
以下是如何直接使用excel文件
你可以做一些事情:
import csv links = [] with open('urls.csv', 'r') as csv_file: csv_reader = csv.reader(csv_file) # Simple example where only a single column of URL's is present links = list(csv_reader)
现在links
是所有网址的列表.然后,您可以在获取页面并擦除数据的函数内循环列表.
def extract_social_links(links): for link in links: base_url = link br = mechanize.Browser() cj = cookielib.LWPCookieJar() br.set_cookiejar(cj) br.set_handle_robots(False) br.set_handle_equiv(False) br.set_handle_redirect(True) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] page = br.open(base_url, timeout=10) links = {} for link in br.links(): if link.url.find('facebook')>=0 or link.url.find('twitter')>=0 or link.url.find('linkedin')>=0 or link.url.find('plus.google')>=0: links[link.url] = {'count': 1, 'texts': [link.text]} # printing for link, data in links.iteritems(): print "%s - %s - %s - %d" % (base_url, link, ",".join(data['texts']), data['count'])
顺便说一句,您应该分割if条件以使它们更具可读性.
你提到你有一个包含所有网站列表的excel文件吗?因此,您可以将excel文件导出为一个csv
文件,然后您可以从python代码中读取值.
以下是有关此内容的更多信息.
以下是如何直接使用excel文件
你可以做一些事情:
import csv links = [] with open('urls.csv', 'r') as csv_file: csv_reader = csv.reader(csv_file) # Simple example where only a single column of URL's is present links = list(csv_reader)
现在links
是所有网址的列表.然后,您可以在获取页面并擦除数据的函数内循环列表.
def extract_social_links(links): for link in links: base_url = link br = mechanize.Browser() cj = cookielib.LWPCookieJar() br.set_cookiejar(cj) br.set_handle_robots(False) br.set_handle_equiv(False) br.set_handle_redirect(True) br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] page = br.open(base_url, timeout=10) links = {} for link in br.links(): if link.url.find('facebook')>=0 or link.url.find('twitter')>=0 or link.url.find('linkedin')>=0 or link.url.find('plus.google')>=0: links[link.url] = {'count': 1, 'texts': [link.text]} # printing for link, data in links.iteritems(): print "%s - %s - %s - %d" % (base_url, link, ",".join(data['texts']), data['count'])
顺便说一句,您应该分割if条件以使它们更具可读性.