Pythonを使用してWeb 1をスクロール



  • 今回行われたプロジェクトでは、グーグルに依存しているので、私に合った情報を検索しようと努力しました.
    (第一段階はすでに完成しており、記憶を美化する前に書いた文章)

  • 次の操作を行います.
    つながるショッピングモールからカテゴリに入ると表示されるショッピングリストからすべてのハイパーリンクを取得
    推測を表す繰り返し文を使用してスクロール先ページをListとして保存
    わかりません.保存したリストから1つずつ取り出し、CSSタグを使用してテキストをインポート
    理由を表す検索する複数のタグのテキストを入力
    )インポートしたテキストtxtファイルとして保存

  • 開発環境:broomide
    (Pythonを仮想マシンに開発するためのide)

  • 開発準備
  • スクロール目標
  • を設定する.
  • ターゲットのDOMタグ構造
  • を理解する
  • スクロールする情報
  • を知る.
  • 起動
    つながるカテゴリ検索時に出現する部分では、開発者モード(F 12)

    これにより、class=「productGridItem」では、aラベルhrefプロパティを使用して各商品のリンクを取得できます.

    また、各ページの共通点からurlリンク
    ~~前のリンク
    /%EC%97%AC%EC%84%B1%EC%9D%98%EB%A5%98/%ED%8B%B0%EC%85%94%EC%B8%A0/c/EI002002000?q=%3 Acreactiontime-desc%3 Amobileyn%3 AFALSE&page=1このように&記号を表した後page=で表す.
  • 推測を表す
    したがって、Pythonでコードを作成し(requestとBeautifulSoupライブラリを使用して)、スクロールしたいすべての商品へのリンクを取得します.
    import urllib.request
    from bs4 import BeautifulSoup
    
    f = open("텍스트이름.txt", 'w')
    
    #for 반복문으로 각 상품 링크 저장한다. 
    #크롤링대상 페이지가 페이지별 &page=0 또는 &page=1 이기 때문에 str(i)를 이용해서 반복문 
    #나는 3페이지까지 있기 때문에 반복문 3번돌리기 
    for i in range(0,3,1):
        url = "여기에 크롤링대상 페이지 주소 넣고 ~~ /c/EI002002000?q=%3Acreationtime-desc%3AmobileYn%3AFALSE&page="+str(i)
        req = urllib.request.Request(url)
        sourcecode = urllib.request.urlopen(url).read()
        soup = BeautifulSoup(sourcecode, "html.parser")
    
        #f = open("페이지링크모음012.txt", 'w')
        for href in soup.find("div", class_="prod-grid-comp defaultGrid").find_all("div", class_="productGridItem"):
            print(href.find("a")["href"])
            f.write(href.find("a")["href"]+'\n')
        i+=1
            
    f.close()
    bs 4がないという警告が表示された場合、pip install bs 4を使用してダウンロードする必要があります.
    推測を表す保存されたテキストは完全なurlではありません.
    保存したテキストを行ごとに読み取り、完全なURLとして作成してListを保存します.
    ->readLines()を使用して行単位で読み込み、lines変数として保存します.
    linesサイズに等しい空のrs List変数を作成し、1行1行の繰り返し文で保存します.
    for i in range(0,len(rs)):
        rs[i]= 'http://www.eider.co.kr'+lines[i]
    わかりません.保存したリストから1つずつ取り出し、CSSタグを使用してテキストをインポート
    with urlopen(rs[i]) as response:
            soup = BeautifulSoup(response, 'html.parser')
        
            for anchor in soup.select("#div_productCode"):
                data = "\t"+anchor.get_text()
    for anchor in soup.select()を使用すると、CSSラベルを使用してインポートできます.
    classを検索するとき->クラス名
    idを使用して->id名を検索する
    条件を満たすテキストのみをインポートする場合.get text()の使用
    他の場所でGoogle検索を行う場合、条件ラベルを1つだけインポートする例を挙げましたが、複数のテキスト(ex、商品固有のコード、商品名、価格、色、、、、)をインポートする必要があります.
    for anchor in soup.select("#div_productCode"):
                data = "\t"+anchor.get_text()
            for anchor in soup.select("#p_productName"):
                data =data+'\t'+ anchor.get_text()
            for anchor in soup.select("#em_color"):
                data =data+'\t'+ anchor.get_text()
    複数のテキストを1つの場所(データ)にインポートするには、複数回使用できます.
    通常、data+=アンカーポイントです.get text()を使用すればいいです.
    インポートした子供の間にラベルを表示したい場合は、data=「t」+アンカーポイントです.get_text()
    企業を離れる場合は、data=「n」+アンカーポイントです.get text()の使用
    理由を表す検索する複数のタグのテキストを入力
    )インポートしたテキストtxtファイルとして保存
    from bs4 import BeautifulSoup
    from urllib.request import urlopen
    
    f = open("상의링크모음012.txt", 'r')	#txt파일을 열어서
    lines = f.readlines()				#한줄씩 읽는다 
    f.close()
    
    #print(lines) #lines 변수에 리스트로 저장되어있음 
    rs = ['','','','','', '','','','','',
         '','','','','', '','','','','',
         '','','','','', '','','','','',
         '','','','','', '','','','','',
         '','','','','', '','','','','',
         '','','','','', '','','','']
    #len(rs) #59
    f = open("Top_코드이름색상.txt", 'w')
    
    for i in range(0,len(rs)):
        rs[i]= 'http://www.eider.co.kr'+lines[i]
        with urlopen(rs[i]) as response:
            soup = BeautifulSoup(response, 'html.parser')
        
            for anchor in soup.select("#div_productCode"):
                data = "\t"+anchor.get_text()
            for anchor in soup.select("#p_productName"):
                data =data+'\t'+ anchor.get_text()
            for anchor in soup.select("#em_color"):
                data =data+'\t'+ anchor.get_text()
    
                #csvWriter.writerow(data)
            
            #print(i+"번째 " +data+"\n")
            f.write(data)
    f.close()
    
     
    保存したtxtを使用できるようになりました.
    第一段階終了!