LoginSignup
2
3

More than 5 years have passed since last update.

python3 ウエブスクレイピングことはじめ

Last updated at Posted at 2018-09-08

流行りのウエブスクレイピングを試してみた。
対象はこういうの大丈夫そうなスラド。

定番のBeautifulsoup。
初めてやってみたけど簡単だな!

アタマの3つを拾ってURLをHTMLに吐き出してみた。
嫁が帰ってくるまでの30分、勢いで書いたのでコードが美しくないのはすみません。

test.py
'''URLを扱うモジュール'''
import urllib.request
from bs4 import BeautifulSoup
import webbrowser
import os

'''スクレイピング機能クラス'''
class Scraper:

    def __init__(self, site):
        self.site = site

    '''BeatifulsoupでURLスクレイプ'''
    def scrape(self):
        geturl = []
        r = urllib.request.urlopen(self.site)
        html = r.read()
        parser = "html.parser"
        sp = BeautifulSoup(html, parser)
        for tag in sp.find_all("a"):
            url = tag.get("href")
            if url is None:
                continue
            if "html" in url:
                geturl.append(url)

        return geturl 

    '''アタマ3つのURLをhtmlに書き出す'''
    def create_html(self, _url):
        with open("test.html", "w", encoding="utf-8") as f:
            f.write("<html>" + "\n")
            f.write("<head>" + "\n")
            f.write("<meta charset=\"utf-8\">" + "\n")
            f.write("<title>super head line!!</title>" + "\n")
            f.write("</head>" + "\n")
            f.write("<h2>This page is \"{}\" headline</h><p>".format(self.site) + "\n")
            for i, new in enumerate(_url):
                l = "<h5><a href=" + "\"" + _url[i] + "\"" + " target=\"_blank\">URL:{}</a>".format(_url[i])
                l += "<br>"+ "\n"
                f.write(l);
                if i == 3:
                    break
            f.write("</html>" + "\n")


'''メイン処理'''
news = "https://srad.jp/"
url = []
url = Scraper(news).scrape()
Scraper(news).create_html(url)

'''デフォルトブラウザで開く'''
webbrowser.open_new_tab("./test.html")



2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3