【问题标题】:mediafire scraper get download_linkmediafire 刮刀获取下载链接
【发布时间】:2015-07-02 14:45:56
【问题描述】:

我制作了一个基本上是网络爬虫的 python 脚本。 我的目标是从一些 blogspot 获取文件的直接下载链接,然后找出直接下载链接。

def trade_spider(max_pages):
    page=1
    i=1
    while page < max_pages:
        url='http://comicsmegacity.blogspot.in/'
        source_code=requests.get(url)
        plain_text=source_code.text
        soup=BeautifulSoup(plain_text)
        for link in soup.findAll('a' , href=re.compile('http://www\.mediafire\.com/')):

            href=link.get('href')
            print('link no ' + str(i) +'    title   ' + link.string)
            i+=1
            print(href)
            get_download_link(href)
        page+=1

def get_download_link(url):
    source_code = requests.get(url)
    plain_text = source_code.text
    soup = BeautifulSoup(plain_text)
    for link in soup.findAll('div', {"class": "download_link"}):
        href = link.get('href')
        print('Download link ')
        print(href)


trade_spider(2)

但是输出:

link no 1    title   Prem Ritu
http://www.mediafire.com/download/1vkgv8i0a151vqm/Prem+Ritu-1.pdf
Download link 
None

Download link 
None
link no 2    title   Kobi Prem
http://www.mediafire.com/download/b46y4fe61cgyfts/kobi+prem-2.pdf
Download link 
None
Download link 
None

【问题讨论】:

    标签: python web web-crawler


    【解决方案1】:

    如果他们透露他们的直接下载链接,他们就不会有任何生意。

    他们通过 JavaScript 隐藏它,因此他们的直接链接不会通过普通的 scraping 方法显示。使用无头方法尝试 selenium。

    这是您可以阅读的article,它将呈现 javascript。

    下面是实际工作的代码:

    from selenium import webdriver
    driver = webdriver.PhantomJS()
    driver.set_window_size(1120, 550)
    driver.get("http://www.mediafire.com/download/1vkgv8i0a151vqm/Prem+Ritu-1.pdf")
    div = driver.find_element_by_class_name('download_link')
    print div.find_element_by_css_selector('a').get_attribute('href')
    driver.quit()
    

    【讨论】:

    • 是的,我知道,但我得到了下载链接简单的网页,例如mediafire.com/download/1vkgv8i0a151vqm/Prem+Ritu-1.pdf
    • 那不是下载链接。这是一个直接下载链接的链接。
    • 是的,我知道,但是当我们检查元素时,我们可以找到直接下载链接
    • 因为您的浏览器已经渲染了 JavaScript。库 requests 无法呈现 JavaScript。
    • 它首先显示你正在使用带括号的打印我第二次做对了
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    相关资源
    最近更新 更多