网站建设关于,简约创意logo设计免费生成,搜索引擎营销实践报告,郑州的网络科技有限公司前言
想快速获取各个高校的博士招生网站#xff0c;于是通过python先获取出有可能包含高校博士招生网站的URL#xff0c;然后通过人为筛选得到了想要的招生网站#xff08;注意#xff0c;并非直接爬取#xff0c;是间接获取的#xff09;。
整理了一份网站名单#x…前言
想快速获取各个高校的博士招生网站于是通过python先获取出有可能包含高校博士招生网站的URL然后通过人为筛选得到了想要的招生网站注意并非直接爬取是间接获取的。
整理了一份网站名单以方便查阅各大高校博士招生信息。
整理好的博客在这里 全国各大985/211博士招生网站 全国各大985/211博士招生网站
Python获取
1. 根据搜索引擎关键字获取内容
常见搜索引擎搜索格式[1]
百度搜索引擎 http://www.baidu.com.cn/s?wd’ 关键词’pn‘分页’。 wd是搜索的关键词pn是分页的页面由于百度搜索每页的结果是十个最上面的可能是广告推广不是搜索结果所以pn0是第一页第二页是pn10… 例如https://www.baidu.com/s?wdpythonpn0得到的是关于python的第一页搜索结果。必应搜索引擎 http://global.bing.com/search?q‘关键词’搜狗搜索引擎 https://www.sogou.com/web?query‘关键词’360搜索引擎 https://www.so.com/s?q‘关键词’
这里我采用必应搜索引擎。比如我想搜索北京大学的博士招生信息对应搜索指令为http://global.bing.com/search?q北京大学博士招生
所以现在需要解决的第一个问题就是如何利用python获取搜索引擎的搜索结果。
参考了如下文章后[2]修改了自己的代码实现了如下功能自定义搜索关键字获取搜索结果第一页结果输出结果网页的标题及其对应URL到文件中等待后续处理文件。
代码如下
import re
import requests
from lxml.html import etree
import time# 重定向输出结果到./data/original_data.txt
import sys
sys.stdout open(./data/original_data.txt, w, encodingutf-8)def get_bing_url(keywords):keywords keywords.strip(\n)bing_url re.sub(r^, https://cn.bing.com/search?q, keywords)bing_url re.sub(r\s, , bing_url)return bing_urlif __name__ __main__:# base_keys是读取基础的搜索关键字这里是“博士招生2023” 你可以自定义其他搜索关键字加号表示空格即搜索结果中需要包含的关键字base_keys open(./data/base.txt, r, encodingutf-8)for key in base_keys:# added_keys是读取附加的搜索关键字比如“北京大学”added_keys open(./data/add.txt, r, encodingutf-8) # add.txt contains the name of universitiesfor t_key in added_keys:new_key t_key.strip()key.strip()print(t_key)bing_url get_bing_url(new_key)headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0,Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8,Accept-Language: zh-CN,zh;q0.8,zh-TW;q0.7,zh-HK;q0.5,en-US;q0.3,en;q0.2,Accept-Encoding: gzip, deflate,cookie: DUPQsBQdXP4Rfrv4P4CTmxe4lQ2T415111783A2IG31B594EB8C9D4B1DB9BDA58C6CFD6F39; MUID196418ED32D66077102115A736D66479; SRCHDAFNOFORM; SRCHUIDV2GUIDDDFFA87D3A894019942913899F5EC316dmnchg1; ENSEARCHBENVER1; _HPVNCSeyJQbiI6eyJDbiI6MiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiUCJ9LCJTYyI6eyJDbiI6MiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiSCJ9LCJReiI6eyJDbiI6MiwiU3QiOjAsIlFzIjowLCJQcm9kIjoiVCJ9LCJBcCI6dHJ1ZSwiTXV0ZSI6dHJ1ZSwiTGFkIjoiMjAyMC0wMy0xNlQwMDowMDowMFoiLCJJb3RkIjowLCJEZnQiOm51bGwsIk12cyI6MCwiRmx0IjowLCJJbXAiOjd9; ABDEFV13ABDV11MRNB1614238717214MRB0; _RwBfmtu0g0cido2pct0s0001-01-01T00:00:00.000000000:00ts2021-02-25T07:47:40.528503900:00e; MUIDB196418ED32D66077102115A736D66479; SerpPWAreg1; SRCHUSRDOB20190509T1614253842000TPC1614238646000; _SSSID375CD2D8DA85697D0DA0DD31DBAB689D; _EDGE_SSID375CD2D8DA85697D0DA0DD31DBAB689Dmktzh-cn; _FPhtaon; SL_GWPT_Show_Hide_tmp1; SL_wptGlobTipTmp1; dscorderShopOrderDefault; ipv6hit1614260171835t4; SRCHHPGUSRCW993CH919DPR1UTC480WTS63749850642HV1614256571BRWHTPBRHMDM0}for i in range(1, 2): # 通过for in来翻页if i 1:url bing_urlelse:url bing_url qsdsfirst str((i * 10) - 1) FORMPEREcontent requests.get(urlurl, timeout5, headersheaders)# 获取content中网页的urltree etree.HTML(content.text)li tree.xpath(//ol[idb_results]//li[classb_algo])[0] # [0] query the first resulttry:h3 li.xpath(//h2/a)for h in h3:result_url h.attrib[href] # 获取网页的urltext h.text # 获取网页的标题if (招生简章 in text or 研究生院 in text or 研究生招生 in text):print(f{text} {result_url}) # 写到文件中因为最开始重定向了输出结果到./data/original_data.txtprint()except Exception:print(error)最终得到原始URL文件结果如下图所示
2. 处理original_data文件
经过上一步骤后得到了搜索引擎检索到的最可能包含博士招生网页的url现在就需要对original_data文件进行处理。这里采用最笨的方法手动筛选直到找到想要的URL为止这样省去了一个学校一个学校检索的步骤相对省事了。如果有大佬直到这一步怎么直接筛选得到招生网页请联系我感激不尽
经过处理后得到了如下图所示内容
3. 转换成Markdown格式
为了方便自己和大家使用转换成Markdown然后发布在博客上可以直接点击学校名字就能访问招生主页了。
Markdown超链接格式为[]()所以可以通过python很方便的直接处理URL得到想要的格式代码如下
# process url to Markdown formate —— [infomation](url)output_file_path ./data/url.md
output_file open(output_file_path, w, encodingutf-8)
# read url from ./data/phd_url.txt
with open(./data/phd_url.txt, r, encodingutf-8) as f:while True:url_list f.readline()if not url_list: # 表明读取到文件末尾breakurl_list url_list.strip()# 去掉末尾的换行符urls url_list.split( )if (len(urls)1): # 表明没有对应urloutput_file.write(urls[0](待更新))output_file.write(\n)elif (len(urls)2):output_file.write([urls[0]](urls[1]))output_file.write(\n)else:print(error: url format error)整理好的博客在这里 全国各大985/211博士招生网站
开源资料
整理好的文档和python文件我开源在了自己的GitHub上AutoPhd
参考资料
[1] python搜索引擎根据关键词获取内容 [2] 如何扩展关键词以及使用python多线程爬取bing搜索结果