小编Jav*_*ara的帖子

如何在 Python 请求上轮换代理

我正在尝试进行一些抓取,但每 4 个请求就会被阻止。我试图更改代理,但错误是一样的。我应该怎么做才能正确更改它?

这是我尝试的一些代码。首先,我从一个免费的网络获取代理。然后我使用新代理执行请求,但它不起作用,因为我被阻止了。

from fake_useragent import UserAgent
import requests

def get_player(id,proxy):
    ua=UserAgent()
    headers = {'User-Agent':ua.random}

    url='https://www.transfermarkt.es/jadon-sancho/profil/spieler/'+str(id)

    try:
        print(proxy)
        r=requests.get(u,headers=headers,proxies=proxy)
    execpt:

....
code to manage the data
....
Run Code Online (Sandbox Code Playgroud)

获取代理

def get_proxies():
    ua=UserAgent()
    headers = {'User-Agent':ua.random}
    url='https://free-proxy-list.net/'

    r=requests.get(url,headers=headers)
    page = BeautifulSoup(r.text, 'html.parser')

    proxies=[]

    for proxy in page.find_all('tr'):
        i=ip=port=0

    for data in proxy.find_all('td'):
        if i==0:
            ip=data.get_text()
        if i==1:
            port=data.get_text()
        i+=1

    if ip!=0 and port!=0:
        proxies+=[{'http':'http://'+ip+':'+port}]

return proxies
Run Code Online (Sandbox Code Playgroud)

调用函数

proxies=get_proxies()
for i in range(1,100):
    player=get_player(i,proxies[i//4])

....
code to manage the data  
....
Run Code Online (Sandbox Code Playgroud)

我知道代理抓取很好,因为当我打印时,我会看到类似的内容: …

python proxy http-proxy web-scraping python-requests

6
推荐指数
3
解决办法
1万
查看次数

将字符串作为参数传递时出错(Solidity)

我签订了一份智能合约来投票,但我的一个功能(“结果”)遇到了麻烦。这是智能合约:

pragma solidity ^0.5.7;

contract Voting{
    struct Option{
        string name;
        uint256 votes;
    }

    Option[] private options;
    address[] private alreadyVote;

    address private owner = msg.sender;

    constructor() public {}

    function addOption(string memory _name) public{
        require(msg.sender==owner,"Permiso denegado");
        options.push(Option(_name,0));
    }

    function vote(string memory _name) public{
        require(find(msg.sender,alreadyVote)==-1,"Ya ha ejercido su derecho a voto");
        int candidateIndex = findOption(_name);
        require(candidateIndex!=-1,"No se ha encontrado el candidato deseado");

        options[uint(candidateIndex)].votes++;

        alreadyVote.push(msg.sender);
    }

    function findOption(string memory _name) private view returns (int){
        int result = -1;
        for(uint i = 0;i<options.length;i++){
            if(compareStrings(options[i].name,_name))
                result …
Run Code Online (Sandbox Code Playgroud)

python solidity smartcontracts web3py

5
推荐指数
1
解决办法
3411
查看次数

获取 BERT 中“[UNK]”的值

我设计了一个基于BERT的模型来解决NER任务。我正在使用带有预训练模型的transformers库。"dccuchile/bert-base-spanish-wwm-cased"当我的模型检测到一个实体但令牌是 时,问题就出现了'[UNK]'。我怎么知道该令牌后面的字符串是哪个?

我知道未知标记无法恢复为原始标记,但我想至少在将输入传递到模型之前捕获该值。

代码非常简单:

    sentenceIds = tokenizer.encode(sentence,add_special_tokens = True)

    inputs = pad_sequences([sentenceIds], maxlen=256, dtype="long", 
                              value=0, truncating="post", padding="post")

    att_mask = torch.tensor([[int(token_id > 0) for token_id in inputs[0]]]).to(device)
    inputs = torch.tensor(inputs).to(device)

    with torch.no_grad():        
        outputs = model(inputs, 
                          token_type_ids=None, 
                          attention_mask=att_mask)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这非常简单,只需标记化、填充或截断、创建注意力掩码并调用模型即可。

我尝试过使用regex,试图找到它周围的两个标记以及类似的东西,但我无法正确解决它。

python-3.x pytorch bert-language-model huggingface-transformers

5
推荐指数
1
解决办法
8464
查看次数