2017-02-19 10 views
0

私はユーザーの入力から最大の番号からウェブサイトの名前を取ってみたい。属性とはアンカーがない場合、彼は、ウェブサイトのクロールにクロールしたい...しかし、どのsolution..hereの私のコード私はPythonのURLのユーザーから入力したいと思う

import requests 
from bs4 import * 
from urllib import request 


url1 = input("Enter url you want to crawl:") 
max_pages1 = int(input("Enter no. of pages you want to crawl:")) 


def web_crawler(max_pages,url): 
    page = 1 
    while page <= max_pages: 
     url4 = str(url) + str(page) 
     url_get = requests.get(url4) 
     plain_text = url_get.text 
     soup = BeautifulSoup(plain_text,"html.parser") 
     for a in soup.findAll('a',{'rel':'bookmark'}): 
      href = a.get('href') 
      title = a.string 
      #print(title) 
      print(href) 
      #info_about_web_pages(href) 
     page +=1 

def info_about_web_pages(url): 
    url_get = requests.get(url) 
    plain_text = url_get.text 
    soup = BeautifulSoup(plain_text,"html.parser") 
    links = set() 
    for about in soup.findAll('a'): 
     href = about.get('href') 
     links.update([href]) 

    print(links) 

web_crawler(max_pages1,url1) 

を取得することはできませんページのそれは私に出力

+0

これを実行しようとしているURLの例がありますか? 'rel': 'bookmark'という属性のアンカーがソースコードにあることを確認してください。 –

+0

はいURLはrel:bookmark .... .. urlはhttp://www.fonearena.com/blog/ – Trunks

答えて

1

では何も示していませんあなたはhtmlのソースコードを見つけようとしていますが、これは常に何も印刷しません。 soup.prettify()を印刷して、探しているタグが存在するかどうかを確認してください。私が期待している値を印刷していないときよりも、しばしば、値が私が探している属性を持っていないためです。

+0

スープを入れる場所です。上記のコードのprettify()は 'soup = BeautifulSoup(plain_text、" html.parser ")の後の行にある – Trunks

+0

' put 'print(str(soup.prettify()))' ' –

関連する問題