Conas Suíomhanna Gréasáin Ríomhthráchtála a Scrabhadh le Python

Tuairimí: 0

Is úsáideach sonraí ríomhthráchtála a scrabhadh chun sonraí táirge a fháil le haghaidh anailís iomaíoch, monatóireacht praghsanna, agus taighde margaidh a dhéanamh. Is féidir sonraí ó leathanaigh táirgí a scrabhadh go háisiúil ag úsáid Python. Léireoidh an teagasc seo duit conas faisnéis a bhailiú ag úsáid teaglaim de requests agus lxml ó shiopaí ar líne.

Is éard atá i gceist le leathanaigh ghréasáin ríomhthráchtála a scrabhadh ná faisnéis táirge a fháil mar theideal, praghas nó uimhir aitheantais ó shiopaí ar an idirlíon. Déanann na leabharlanna iomadúla atá ar fáil i Python seo ní amháin éasca ach éifeachtach go maith freisin. San alt seo, díreoimid ar shuíomhanna gréasáin ríomhthráchtála a scrabhadh ag úsáid Python. Beidh suíomh gréasáin Costco mar ár n-ábhar.

Script a Scríobh le haghaidh Sonraí Ríomhthráchtála a Scrabhadh

Chun tosaigh, déanaimis cinnte go bhfuil na huirlisí nó na leabharlanna Python uile atá riachtanach don script seo ar fáil againn:


pip install requests
pip install lxml

Díreoimid ar ainmneacha táirgí, gnéithe agus brandaí a bhaint ó leathanaigh áirithe ar an suíomh.

Céim 1. Struchtúr HTML an tsuímh ghréasáin a thuiscint

Chun tosú le scraper táirgí ríomhthráchtála a thógáil caithfidh tú tuiscint a fháil ar an gcaoi a bhfuil an leathanach gréasáin áirithe struchtúrtha. Téigh chuig an suíomh agus oscail an leathanach as ar mhaith leat faisnéis a bhailiú, agus scrúdaigh na heilimintí riachtanacha (m.sh. ainm an táirge, gnéithe, branda, srl.).

Céim 2. Iarratais HTTP a sheoladh

Ar dtús, déanfaimid an leabharlann requests a iompórtáil chun GET a sheoladh go háirithe le haghaidh na leathanaigh táirgí. Chomh maith leis sin, beimid ag cumrú ceanntásca na hiarrataí chun cur síos ar iarratas ó bhrabhsálaí a dhéanamh.


import requests

# Liosta URLanna Táirgí le Scrape
urls = [
    "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
    "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

headers = {
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-language': 'en-US,en;q=0.9',
    'cache-control': 'no-cache',
    'dnt': '1',
    'pragma': 'no-cache',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
    'sec-ch-ua-mobile': '?0',
    'sec-fetch-dest': 'document',
    'sec-fetch-mode': 'navigate',
    'sec-fetch-site': 'same-origin',
    'sec-fetch-user': '?1',
    'upgrade-insecure-requests': '1',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# Lúb trí gach URL agus iarratas GET a sheoladh
for url in urls:
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        html_content = response.text
        # Cuirfear tuilleadh próiseála leis i gcéimeanna ina dhiaidh sin
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

Céim 3. Sonraí a bhaint as XPath agus LXML

Le LXML, bainfimid an t -eolas inmhianaithe ón HTML. Tá sé ríthábhachtach agus tú ag déileáil le scríobadh sonraí ríomhthráchtála.


from lxml import html

# Liosta chun sonraí scríobtha a stóráil
scraped_data = []

# Lúb trí gach URL agus iarratas GET a sheoladh
for url in urls:
    response = requests.get(url)
    if response.status_code == 200:
        html_content = response.content
        # Ábhar HTML a pharsáil le LXML
        tree = html.fromstring(html_content)
        
        # Sonraí a bhaint as XPath ag baint úsáide as XPath
        product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
        product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
        product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()
        
        # Cuir sonraí as an liosta ar an liosta
        scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
    else:
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# Priontáil na sonraí scríobtha
for item in scraped_data:
    print(item)

Céim 4. Aghaidh a thabhairt ar shaincheisteanna féideartha

Nuair a dhéanaimid iarracht suíomh gréasáin ríomhthráchtála a scrapáil le Python ní mór dúinn a thuiscint go bhfuil cineál éigin bogearraí frith-bot ag formhór na láithreán gréasáin. Is féidir le húsáid seachvótálaithe agus gníomhairí úsáideoirí rothlacha a n -amhras a mhaolú.

Ag baint úsáide as seachvótálaithe le húdarú IP:


proxies = {
    'http': 'http://your_proxy_ip:your_proxy_port',
    'https': 'https://your_proxy_ip:your_proxy_port'
}
response = requests.get(url, proxies=proxies)

Gníomhairí úsáideoirí rothlacha:


import random

user_agents = [
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
    # Cuir níos mó gníomhairí úsáideoirí leis de réir mar is gá
]

headers['user-agent'] = random.choice(user_agents)

response = requests.get(url, headers=headers)

Céim 5. Sonraí a shábháil ar chomhad CSV

Sa deireadh, stórálfar na sonraí eastósctha i bhformáid CSV ionas gur féidir liom é a anailísiú níos déanaí le haghaidh próiseas scríobtha sonraí ríomhthráchtála níos airde.


import csv

csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# Sonraí a scríobh chuig comhad CSV
try:
    with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        writer.writeheader()
        for item in scraped_data:
            writer.writerow(item)
    print(f"Data saved to {csv_file}")
except IOError:
    print(f"Error occurred while writing data to {csv_file}")

Cód Comhlánaithe

Seo an leagan deiridh den script le haghaidh scríobadh éifeachtach na sonraí ríomhthráchtála. Is féidir é a chóipeáil agus a ghreamú le húsáid go héasca.


import requests
import urllib3
from lxml import html
import csv
import random
import ssl

ssl._create_default_https_context = ssl._create_stdlib_context
urllib3.disable_warnings()

# Liosta URLanna Táirgí le Scrape
urls = [
   "https://www.costco.com/kirkland-signature-men's-sneaker.product.4000216649.html",
   "https://www.costco.com/adidas-ladies'-puremotion-shoe.product.4000177646.html"
]

# headers
headers = {
   'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
   'accept-language': 'en-US,en;q=0.9',
   'cache-control': 'no-cache',
   'dnt': '1',
   'pragma': 'no-cache',
   'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
   'sec-ch-ua-mobile': '?0',
   'sec-fetch-dest': 'document',
   'sec-fetch-mode': 'navigate',
   'sec-fetch-site': 'same-origin',
   'sec-fetch-user': '?1',
   'upgrade-insecure-requests': '1',
   'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
}

# Liosta de ghníomhairí úsáideoirí le haghaidh iarrataí rothlacha
user_agents = [
   'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
   # Cuir níos mó gníomhairí úsáideoirí leis de réir mar is gá
]


# Liosta na seachvótálaithe d'iarratais rothlacha
proxies = [
    {'http': 'http://your_proxy_ip:your_proxy_port', 'https': 'https://your_proxy_ip:your_proxy_port'},
    {'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
    # Cuir níos mó seachvótálaithe leis de réir mar is gá
]

# Liosta chun sonraí scríobtha a stóráil
scraped_data = []

# Lúb trí gach URL agus iarratas GET a sheoladh
for url in urls:
   # Roghnaigh Gníomhaire Úsáideora Randamach le haghaidh na gCeanntásca Iarratais
   headers['user-agent'] = random.choice(user_agents)
   # Roghnaigh seachvótálaí randamach don iarraidh
   proxy = random.choice(proxies)

   # Seol http faigh iarratas chuig an URL le ceanntásca agus seachvótálaí
   response = requests.get(url, headers=headers, proxies=proxy, verify=False)
   if response.status_code == 200:
       # Stóráil an t -ábhar HTML ón bhfreagra
       html_content = response.content
       # Ábhar HTML a pharsáil le LXML
       tree = html.fromstring(html_content)

       # Sonraí a bhaint as XPath ag baint úsáide as XPath
       product_name = tree.xpath('//h1[@automation-id="productName"]/text()')[0].strip()
       product_feature = tree.xpath('//ul[@class="pdp-features"]//li//text()')
       product_brand = tree.xpath('//div[@itemprop="brand"]/text()')[0].strip()

       # Cuir sonraí as an liosta ar an liosta
       scraped_data.append({'Product Name': product_name, 'Product Feature': product_feature, 'Brand': product_brand})
   else:
       # Teachtaireacht Earráid Priontáil Má theipeann ar an Iarratas
       print(f"Failed to retrieve {url}. Status code: {response.status_code}")

# Socrú comhad CSV
csv_file = 'costco_products.csv'
fieldnames = ['Product Name', 'Product Feature', 'Brand']

# Sonraí a scríobh chuig comhad CSV
try:
   with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
       writer = csv.DictWriter(file, fieldnames=fieldnames)
       writer.writeheader()
       for item in scraped_data:
           writer.writerow(item)
   print(f"Data saved to {csv_file}")
except IOError:
   # Teachtaireacht Earráid Priontáil Má theipeann ar an Scríbhneoireacht chun Comhad
   print(f"Error occurred while writing data to {csv_file}")

Tá scraper ríomhthráchtála Python críochnaithe anois.

Scrapáil Sonraí Ríomhthráchtála: Smaointe Deiridh

Taispeánann úsáid scraper gréasáin ríomhthráchtála do stór ar líne Costco cé chomh héifeachtach is atá Python chun sonraí táirge a fháil le haghaidh anailíse agus cinntí gnó is fearr. Leis na hiarratais ar na scripteanna agus ar na leabharlanna cearta agus LXML chun eastóscadh uathoibrithe a sholáthar, is féidir an suíomh a scrapáil gan aon bhriseadh sreafa oibre de bharr API frith-bot. Mar fhocal scoir, tá sé riachtanach cloí le rialacháin eiticiúla i gcónaí agus scríobadh gréasáin ríomhthráchtála á dhéanamh.

Tuairimí:

0 tuairimí