c爬虫抓取网页数据(没有反爬虫机制的生物网站上如何利用Python做“省力”)

优采云 发布时间: 2021-12-23 03:03

  c爬虫抓取网页数据(没有反爬虫机制的生物网站上如何利用Python做“省力”)

  我们可以用Python对一些没有反爬虫机制的生物做一些“省力”的事情网站,比如ID转换

  我们以uniprot为例,进入它的转换页面入口,页面:

  

  如果我有需要转换的ID,那么在对话框中输入转换即可。如果有很多,那么我们尝试通过计算机来解决它。

  这里介绍Python库urllib,非常强大,可以爬取动态网页

  所谓动态网页,并不是说页面会移动,是动态网页;这里的动态网页是指前后端(数据库)的接口,前后端的交互是通过表单来实现的。

  按照这个思路,我们来看看网站的网页结构:

  

  我们找到了对应的对话框,发现它的表单模型如图所示,然后根据urllib,我们设置一个参数,以字典的形式保存

  import urllib.parse

import urllib.request

url = "https://www.uniprot.org/uploadlists/"

params = {

"from": "ACC+ID",

"to": "GENENAME",

# 返回结果的格式

"format": "tab",

"uploadQuery": 'p31946'

}

data = urllib.parse.urlencode(params)

data = data.encode('utf-8')

req = urllib.request.Request(url, data)

with urllib.request.urlopen(req) as f:

response = f.read()

c_id = response.decode('utf-8')

print(c_id)

  

  url是id转换的URL,params是你要爬取的内容,以字典的形式存储,那么字典的key值代表的是HTML表单(form)中name的内容:

  例如来自:

  

  字典的键值对应表单的名称标签内容

  to 是一样的:

  

  对于上传查询:

  

  必须是对应表单的名称标签中的内容

  至于“格式”:“tab”是指我们将抓取到的网页转换成tab格式

  TAB是属性数据的表结构文件。属性数据表结构文件定义了地图属性数据的表结构,包括字段数、字段名称、字段类型和字段宽度、索引字段以及对应图层的一些关键空间信息的描述。TAB 文件实际上是一个文本文件,您可以在写字板中打开它来观察其内容。

  当然,这个技巧适用于表单提交爬虫。如果爬取的内容太多,不妨写一个函数:

  import urllib.parse

import urllib.request

url = "https://www.uniprot.org/uploadlists/"

def uniprot(id):

params = {

# 返回结果的格式

"format": "tab",

"from": "ACC+ID",

"to": "GENENAME",

"uploadQuery": id

}

data = urllib.parse.urlencode(params)

data = data.encode('utf-8')

req = urllib.request.Request(url, data)

with urllib.request.urlopen(req) as f:

response = f.read()

c_id = response.decode('utf-8')

print(c_id)

  参考:传送门

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线