خزش در صفحه وب و یافتن کلمات مکرر با پایتون — راهنمای کاربردی
در این مطلب، چگونگی خزش در صفحه وب و یافتن کلمات مکرر با پایتون مورد بررسی قرار خواهد گرفت. در واقع، در ادامه برنامه پایتونی ارائه میشود که با خزش در یک صفحه وب، کلمات مکرر موجود در آن را پیدا میکند.
در این راستا، ابتدا، به کمک ماژولهای «requests» و «beautiful soup» که دادهها را از صفحه وب استخراج میکنند، یک خزنده وب ساخته میشود. این خزنده وب، دادهها را از صفحه وب استخراج و آنها را در یک لیست ذخیرهسازی میکند. این امکان وجود دارد که برخی از کلمات یا نمادهای ناخواسته (مانند نمادهای ویژه، فضاهای خالی) را به منظور تسهیل شمارش و به دست آوردن نتایج مورد انتظار فیلتر کرد. پس از محاسبه تعداد تکرار هر کلمه، میتوان کلمات دارای بیشترین تکرار (۱۰ یا ۲۰) را به دست آورد.
ماژولها و توابع کتابخانهای استفاده شده
- requests: امکان ارسال درخواستهای HTTP/1.1 و بسیاری از دیگر موارد را فراهم میکند.
- beautifulsoup4: برای بیرون کشیدن دادهها از فایلهای HTML و XML قابل استفاده است.
- operator: یک مجموعه از توابع موثر متناظر با عملگرهای ذاتی را «صادر» (Exports) میکند.
- collections: نوع داده با کارایی بالا را پیادهسازی میکند.
در ادامه، ایده مطرح شده در بالا، در «زبان برنامهنویسی پایتون» (Python Programming Language) پیادهسازی شده است.
# Python3 program for a word frequency
# counter after crawling a web-page
import requests
from bs4 import BeautifulSoup
import operator
from collections import Counter
'''Function defining the web-crawler/core
spider, which will fetch information from
a given website, and push the contents to
the second function clean_wordlist()'''
def start(url):
# empty list to store the contents of
# the website fetched from our web-crawler
wordlist = []
source_code = requests.get(url).text
# BeautifulSoup object which will
# ping the requested url for data
soup = BeautifulSoup(source_code, 'html.parser')
# Text in given web-page is stored under
# the <div> tags with class <entry-content>
for each_text in soup.findAll('div', {'class':'entry-content'}):
content = each_text.text
# use split() to break the sentence into
# words and convert them into lowercase
words = content.lower().split()
for each_word in words:
wordlist.append(each_word)
clean_wordlist(wordlist)
# Function removes any unwanted symbols
def clean_wordlist(wordlist):
clean_list =[]
for word in wordlist:
symbols = '!@#$%^&*()_-+={[}]|\;:"<>?/., '
for i in range (0, len(symbols)):
word = word.replace(symbols[i], '')
if len(word) > 0:
clean_list.append(word)
create_dictionary(clean_list)
# Creates a dictionary conatining each word's
# count and top_20 ocuuring words
def create_dictionary(clean_list):
word_count = {}
for word in clean_list:
if word in word_count:
word_count[word] += 1
else:
word_count[word] = 1
''' To get count of each word in
the crawled page -->
# operator.itemgetter() takes one
# parameter either 1(denotes keys)
# or 0 (denotes corresponding values)
for key, value in sorted(word_count.items(),
key = operator.itemgetter(1)):
print ("% s : % s " % (key, value))
<-- '''
c = Counter(word_count)
# returns the most occuring elements
top = c.most_common(10)
print(top)
# Driver code
if __name__ == '__main__':
start("https://www.geeksforgeeks.org/programming-language-choose/")
خروجی قطعه کد بالا به صورت زیر است.
[(‘to’, 10), (‘in’, 7), (‘is’, 6), (‘language’, 6), (‘the’, 5),
(‘programming’, 5), (‘a’, 5), (‘c’, 5), (‘you’, 5), (‘of’, 4)]
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون Python
- آموزش تکمیلی برنامهنویسی پایتون
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- وب اسکرپینگ (Web Scraping) با پایتون و کتابخانه Beautiful Soup — راهنمای جامع
- ساخت خزنده وب (Web Crawler) با فریمورک Scrapy — از صفر تا صد
مجموعه: برنامه نویسی برچسب ها: Crawl a web page, python, برنامه نویسی پایتون, پایتون, خزش در صفحه وب, خزش در وب, کلمات مکرر, وب اسکرپینگ, وب کراولینگ