历时8小时的爬虫:基因全名与基因名缩写的转换——Genecards
在爬取了TCMSPW的中药材的靶向基因后,得到的靶向基因名称是全名,但是后续分析需要的是基因名称缩写(即Gene Symbol)。最初尝试用R语言的org.Hs.eg.db包来进行转换,然而结果不尽人意,能转换的基因寥寥无几,于是又将目光投向了Genecards。。
基本思路是将基因全名进行检索,然后选取检索结果中第一个,这样的弊端就是第一个结果未必就是正确的那一个,但是Genecars也是根据匹配相似性进行排序的,因此概率较小。(本来为了更加精确打算在每个检索结果的跳转页面中进行匹配准确性判断,但是考虑到这样做相当费时,而且还会给Genecards的服务器造成压力,自己的IP也有被封的风险,得不偿失)
以下是所需的库和参数,base_url用来第一次请求获取cookies,url用来进行第二次请求,解析网页,解析工具为lxml,然后用xlsxwriter将得到的结果写入excel。
import requests
from lxml import etree
import openpyxl
import xlsxwriter
import time
base_url = 'https://www.genecards.org'
url = 'https://www.genecards.org/Search/Keyword?queryString=%20Cholinesterase'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36',
'cookie': 'ASP.NET_SessionId=fbn1f52ppnbotksqpszu4lhe; rvcn=0Kpw76RjQWVPghHk_eHFMzdye5bqaMDGx5BUmO0BCiQv5NL9fBg_F6DHp2D7zcU955B-K0moDdWWLEgyLvPPU8H7vRY1; ARRAffinity=bbda99ae9f2cbea3a7894c6d34604e73c55fed16cf5f41fadce3a25415ea24f4; visid_incap_146342=JJg8EvqnRL21kFlyDqoJtVp4jF4AAAAAQUIPAAAAAADoDyfKhHCxYjc4Esv7sFIl; nlbi_146342=3Z3Bda14by/DQ4RJmewSQgAAAABIDL4M3uKW9Nn5B+a0Tx19; _ga=GA1.2.1127478822.1586264159; _gid=GA1.2.772327545.1586264159; __gads=ID=00050bb968e74cd0:T=1586264160:S=ALNI_MZrmbqyOxyLDo2Z5_k5rcoA7tMkLg; incap_ses_433_146342=JsQwcq4j9GPUtFdrVVQCBrF/jF4AAAAA4L1izrsxqq8bGasGou8j5g=='
}
读取先前保存的excel文件
def read_target()