简单的Python图像刮板脚本

时间:2016-02-17 11:32:36

标签: python image beautifulsoup scraper

这里有相当简单的东西...所以我正在尝试使用python,而且我的经验很少......我想创建一个图像刮板,页面下载图像点击链接(下一页)和下载其他图像等(作为源我使用类似于9gag的网站)。 现在我的脚本可以打印图像网址和下一个链接网址,所以我无法弄清楚如何让我的机器人点击链接并下载下一个图像并无限地执行(直到条件满足/停止等)......

PS即时通讯使用beautifulsoup4(我认为LOL)

提前致谢, ZIL

这里的脚本现在是什么样的,我有点将几个脚本组合成一个,所以脚本看起来非常不洁净......

import requests
from bs4 import BeautifulSoup
import urllib

def trade_spider(max_pages):
    page = 1
    while page <= max_pages:
        url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
        url = url2
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")

        for img in soup.findAll('img', {'class': 'img'}):
            temp = img.get('src')
            if temp[:1]=="/":
                image = "http://linksmiau.net" + temp
            else:
                image = temp

        print(image)


        for lnk in soup.findAll('div', {'id': 'arrow_right'}):
                nextlink = lnk.get('onclick')
                link = nextlink.replace("window.location = '", "")
                lastlink = "http://linksmiau.net" + link
                page += 1
        print(lastlink)
        url2 == lastlink

trade_spider(3)

2 个答案:

答案 0 :(得分:1)

我不会用&#34;点击&#34;来考虑它。一个链接,因为您正在编写脚本,而不是使用浏览器。

你需要的是找出4件事:

  1. 给定一个网址,你如何得到它背后的HTML并用beautifulSoup解析它 - 听起来你已经把这部分放下了。 :)

  2. 鉴于许多不同的htmls,您如何识别要下载的图像以及&#34; next&#34;链接。 - 再次,beautifulSoup。

  3. 给定一个图像的网址(在<img>标签的&#34; src&#34;属性中找到),如何将图像保存到磁盘。 答案可以在StackOverflow问题中找到,如下所示: Downloading a picture via urllib and python

  4. 给出一个&#34; next&#34;链接,你如何&#34;点击&#34;在它上面 - 再次,你不是真的&#34;点击&#34;你只需从这个新链接下载HTML并再次开始整个循环(解析它,识别图像和&#34;下一个&#34;链接&#34;,下载图像,获取HTML&#34; next& #34;链接)。

  5. 一旦你解决了问题,剩下的就是用一个漂亮的脚本组装所有内容,然后你就完成了。

    祝你好运:)

答案 1 :(得分:1)

它已经修好了。 DougieHauser是对的,我想为此握手。

我刚刚在while循环之外移动了url2行,它似乎工作得很好,现在我只需要弄清楚如何使这个脚本在我的硬盘LOL上保存图片

def trade_spider(max_pages):
    url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
    page = 1
    while page <= max_pages:
#url2 = 'http://linksmiau.net/linksmi_paveiksliukai/rimtas_rudeninis_ispejimas_merginoms/1819/'
        url = url2
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text, "html.parser")
        #current_bet_id = "event_odd_id_31362885" #+ str(5)

        #for link in soup.findAll('span', {'class': 'game'}, itemprop="name"):