CSDN記事はブロガー記事のトップ10をクロールし、それらをmdに変換します

CSDNクロール

python + selenium + parsel + tomd

日焼けした

コードアドレス:
github
gitee


## 1つ、必要な知識*** 1.パーサーモジュールの基本的な知識***

(1)CSSセレクター
は、Parsel
Import Selector
html からparsel.Selectorオブジェクトを作成する必要があります。これは、Webページリクエストのソースコードにすることができます。または、Selectorオブジェクトを作成した後
html 形式のstring selector = Selector(html)(xml形式tags = selector.css( ' 。content ')を通常使用するCSSの
使用を開始し
ます。ここでも
.class_attrを使用して、特定のタグが変更されたときに変更され
ます。.content は、照会
のコンテンツのすべての照会クラスラベルを参照します
の結果は特殊なオブジェクトであり、必要なデータを直接取得することはできません
。css()関数クエリの結果を文字列またはリストに変換するには、関数を使用する必要があります
•get()
•getall()

(2)属性抽出

href_value = selector.css('a::attr(href)').get()   #提取href标签的值
title=page.css(".title-article::text").get()      #提取文本内容

2.
要素選択するセレンのメソッド
find_element_by_class_name:クラスに従って検索

find_element_by_css_selector:CSSによると

find_element_by_id:IDに従って検索

find_element_by_link_text:リンクのテキストに従って検索します

find_element_by_name:ノード名に基づいて検索

find_element_by_partial_link_text:テキスト全体に含まれている限り、リンクのテキストに従って検索します

find_element_by_tag_name:タグで検索

find_element_by_xpath:Xpathを使用して検索します

PS:要素を要素に変更すると、すべての適格な要素が検索され、リストが返されます

比如:find_elements_by_class_name

返されるのはweb_elementオブジェクトです

3.tomd
text = tomd.Tomd(content).markdown
は、取得した記事をマークダウン形式に変換します

2、コード表示

1.記事を入手する

#对一篇文章的爬取
def spider_one_csdn(title_url):    # 目标文章的链接
    html=requests.get(url=title_url,headers=head).text
    page=parsel.Selector(html)
    #创建解释器
    title=page.css(".title-article::text").get()
    title=filter_str(title)
    print(title)
    content=page.css("article").get()
    content=re.sub("<a.*?a>","",content)
    content = re.sub("<br>", "", content)
    #过滤a标签和br标签
    text=tomd.Tomd(content).markdown
    #转换为markdown 文件
    path = os.getcwd()  # 获取当前的目录路径
    file_name = "./passage"
    final_road = path + file_name
    try:
        os.mkdir(final_road)
        print('创建成功!')
    except:
        # print('目录已经存在或异常')
        pass
    with open(final_road+r"./"+title+".md",mode="w",encoding="utf-8") as f:
        f.write("#"+title)
        f.write(text)
    time.sleep(1)

2.すべてのブロガーの記事を入手する

def get_article_link(user):
    #获取某个博主的所有文章
    page=1
    while True:
        link = "https://blog.csdn.net/{}/article/list/{}".format(user, page)
        print("现在爬取第", page, "页")
        html = requests.get(url=link, headers=head).text
        cel = parsel.Selector(html)
        name_link = cel.css(".article-list h4 a::attr(href) ").getall()
        if not name_link:
            break
            #没有文章就退出
        for name in name_link:
            spider_one_csdn(name)
        page+=1
    time.sleep(1)

3.ブロガーの名前を取得する

def nb_bozhu():
    #获取前十博主的csdn名称
    driver=webdriver.Chrome()
    driver.implicitly_wait(10)
    driver.get("https://blog.csdn.net/rank/writing_rank")
    names=driver.find_elements_by_xpath("//div[@class='rank-item-box d-flex align-items-center']//div[@class='name d-flex align-items-center']/h2/a")
    name_list=[]
    for name in names:
        final_name=name.get_attribute("outerHTML")
        final_name=re.sub('<a href="https://blog.csdn.net/',"",final_name)
        final_name=re.sub('">.*</a>','',final_name)
        name_list.append(final_name)
        print(final_name)
    driver.quit()
    time.sleep(1)
    return name_list

最後の実行後、すべての記事を含むパッセージディレクトリがプログラムが配置されているディレクトリに生成されます
ここに画像の説明を挿入
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/tansty_zh/article/details/108363992