如何在页面上选择随机链接?

时间:2015-07-29 13:33:53

标签: python python-3.x beautifulsoup

我正在使用美丽的汤从页面获取链接。 我想要它做的是随机选择一个链接并继续该程序的其余部分。目前它正在使用所有链接并继续执行其余程序,但我只希望它选择1个链接。

然后程序的其余部分将查看链接并确定它是否足够我想要的东西。如果它不够好,它将返回并单击另一个链接。并重复这些过程。

你知道如何做到这一点吗?

这是我目前查找链接的代码。

import requests
import os.path
from bs4 import BeautifulSoup
import urllib.request
import hashlib
import random

max_page = 1
img_limit = 5

def pic_spider(max_pages):
    page = random.randrange(0, max_page)
    pid = page * 40
    pic_good = 1
    while pic_good == 1:
        if page <= max_pages:
            url = 'http://safebooru.org/index.php?page=post&s=list&tags=yuri&pid=' + str(pid)
            source_code = requests.get(url)
            plain_text = source_code.text
            soup = BeautifulSoup(plain_text, "html.parser")
            id_list_location = os.path.join(id_save, "ids.txt")
            first_link = soup.findAll('a', id=True, limit=img_limit)
            for link in first_link:
                href = "http://safebooru.org/" + link.get('href')
                picture_id = link.get('id')
                print("Page number = " + str(page + 1))
                print("pid = " + str(pid))
                print("Id = " + picture_id)
                print(href)

                if picture_id in open(id_list_location).read():
                    print("Already Downloaded or Picture checked to be too long")
                else:
                    log_id(picture_id)
                    if ratio_get(href) >= 1.3:
                        print("Picture too long")
                    else:
                        #img_download_link(href, picture_id)
                        print("Ok download") 

我不确定我会怎么做所以任何想法都会帮助我,如果你有任何问题随时可以问!

1 个答案:

答案 0 :(得分:3)

我错过了什么吗?你不需要替换它:

first_link = soup.findAll('a', id=True, limit=img_limit)
for link in first_link:

使用:

 from random import choice

 first_link = soup.findAll('a', id=True, limit=img_limit)
 link = choice(first_link)

这将从列表中选择一个随机项