Treoir maidir le Scrapáil Craigslist le Python

Tuairimí: 0

Is ardán suntasach é Craigslist fós chun rochtain a fháil ar fhógraí sonracha rangaithe sa radharc digiteach reatha. Ag baint úsáide as Python chun sonraí a shruthlíniú, cruthaítear go bhfuil an t -eastóscadh ó na fógraí an -chabhrach. Cumasaítear oibríochtaí scríobtha gréasáin táirgiúla ag na inoiriúnaitheacht agus na leabharlanna láidre i Python mar iarratais nó álainn. Léiríonn an treoir seo i réimse scríobadh Craigslist le Python, ag cur béime ar úsáid BeautifulSoup agus iarratais ar eastóscadh ábhair, mar aon le huainíocht seachvótála chun cosaintí frith-bot a nascleanúint go héifeachtach.

Bunchéimeanna chun craiglist a scrape le python

Ansin, rachaimid tríd an bpróiseas scríobtha céim ar chéim, ag tosú le hiarratais HTTP a sheoladh agus eilimintí leathanaigh ar leith a bhaint amach, agus críochnú le coigilt na sonraí san fhormáid riachtanach.

Do thimpeallacht a chur ar bun

Beidh ort na leabharlanna riachtanacha a shuiteáil:


pip install beautifulsoup4
pip install requests

Iarratais HTTP a sheoladh chuig Leathanaigh Craigslist

Bain úsáid as an leabharlann iarratais chun iarratais HTTP GET a sheoladh chuig leathanaigh liostála Craigslist.


import requests

# Liosta na n -urls craigslist le scrape
urls = [
    "link",
    "link"
]

for url in urls:
    # Seol iarratas ar an URL
    response = requests.get(url)
    
    # Seiceáil an raibh an t -iarratas rathúil (Cód Stádas 200)
    if response.status_code == 200:
        # Sliocht Ábhar HTML as an bhfreagra
        html_content = response.text
        
    else:
        # Má theip ar an iarraidh, priontáil teachtaireacht earráide leis an gcód stádais
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

Parsáil Ábhar HTML le BeautifulSoup

Bain úsáid as BeautifulSoup le haghaidh parsáil HTML agus nascleanúint tríd an ábhar aisghafa.


from bs4 import BeautifulSoup

# Athraigh trí gach URL sa liosta
for url in urls:
    # Seol iarratas ar an URL
    response = requests.get(url)
    
    # Seiceáil an raibh an t -iarratas rathúil (Cód Stádas 200)
    if response.status_code == 200:
        # Sliocht Ábhar HTML as an bhfreagra
        html_content = response.text
        
        # Parse an t -ábhar HTML ag baint úsáide as BeautifulSoup
        soup = BeautifulSoup(html_content, 'html.parser')
        
    else:
        # Má theip ar an iarraidh, priontáil teachtaireacht earráide leis an gcód stádais
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

Sonraí a bhaint ag baint úsáide as modhanna áille áille

Sliocht sonraí ar nós teidil ítimí agus praghsanna ó liostaí Craigslist ag baint úsáide as modhanna BeautifulSoup.


from bs4 import BeautifulSoup

# Athraigh trí gach URL sa liosta
for url in urls:
    # Seol iarratas ar an URL
    response = requests.get(url)
    
    # Seiceáil an raibh an t -iarratas rathúil (Cód Stádas 200)
    if response.status_code == 200:
        # Sliocht Ábhar HTML as an bhfreagra
        html_content = response.text
        
        # Parse an t -ábhar HTML ag baint úsáide as BeautifulSoup
        soup = BeautifulSoup(html_content, 'html.parser')
        
        # Pointí sonracha sonraí a bhaint amach
        # Faigh teideal an liostála
        title = soup.find('span', id='titletextonly').text.strip()
        
        # Faigh praghas an liostála
        price = soup.find('span', class_='price').text.strip()
        
        # Faigh an cur síos ar an liosta (féadfaidh il -mhíreanna a bheith ann)
        description = soup.find('section', id='postingbody').find_all(text=True, recursive=False)
        
        # Priontáil sonraí eastósctha (chun críocha taispeántais)
        print(f"Title: {title}")
        print(f"Price: {price}")
        print(f"Description: {description}")
        
    else:
        # Má theipeann ar an iarraidh, priontáil teachtaireacht earráide leis an gcód stádais
        print(f"Failed to retrieve {url}. Status code: {response.status_code}")

Ceart:

1.png

Praghas a fháil amach:

2.png

Saghas:

3.png

Sábháil sonraí scríobtha go comhad CSV

Nuair a bhaintear na sonraí, sábháil é chuig comhad CSV le haghaidh anailíse breise nó comhtháthú le huirlisí eile.


import csv

# Sainmhínigh an cosán comhaid CSV agus ainmneacha allamuigh
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']

# Sonraí a scríobh chuig comhad CSV
try:
    # Oscail an comhad CSV i mód scríbhneoireachta le hionchódú UTF-8
    with open(csv_file, mode='w', newline='', encoding='utf-8') as file:
        # Cruthaigh réad DictWriter CSV leis na hainmneacha allamuigh sonraithe
        writer = csv.DictWriter(file, fieldnames=fieldnames)
        
        # Scríobh an tsraith ceanntásca sa chomhad CSV
        writer.writeheader()
        
        # Athraigh trí gach mír sa liosta scraped_data
        for item in scraped_data:
            # Scríobh gach mír mar a chéile sa chomhad CSV
            writer.writerow(item)
        
    # Priontáil teachtaireacht ratha tar éis sonraí a scríobh chuig an gcomhad CSV
    print(f"Data saved to {csv_file}")

except IOError:
    # Priontáil teachtaireacht earráide má tharlaíonn ioerror agus tú ag scríobh chuig an gcomhad CSV
    print(f"Error occurred while writing data to {csv_file}")

Láimhseálann sé bloic bhóthair fhéideartha

Féadfaidh Craigslist bearta a chur i bhfeidhm chun scríobadh a chosc, mar dhúshláin blocáil IP nó Captcha. Chun na saincheisteanna seo a mhaolú, smaoinigh ar úsáid a bhaint as seachvótálaithe agus gníomhairí úsáideoirí rothlacha.

Ag baint úsáide as seachvótálaithe:

Léiríonn an sampla seo úsáid seachvótálaí le húdarú seoladh IP.


proxies = {
    'http': 'http://your_proxy_ip:your_proxy_port',
    'https': 'https://your_proxy_ip:your_proxy_port'
}

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

Rothlú gníomhaire úsáideora:


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ód Iomlán

Taispeánann an script Python iomlán seo conas comhpháirteanna difriúla a chomhtháthú chun scraper éifeachtach Craigslist a thógáil a shroicheann, a pharsálann, agus a aisghabhann sonraí ó il -URLanna.


import requests
import urllib3
from bs4 import BeautifulSoup
import csv
import random
import ssl

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


# Liosta na n -urls craigslist le scrape
urls = [
    "link",
    "link"
]

# Gníomhairí úsáideoirí agus seachvótálaithe
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',
]

proxies = [
    {'http': 'http://your_proxy_ip1:your_proxy_port1', 'https': 'https://your_proxy_ip1:your_proxy_port1'},
    {'http': 'http://your_proxy_ip2:your_proxy_port2', 'https': 'https://your_proxy_ip2:your_proxy_port2'},
]

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

# Lúb trí gach URL sa liosta
for url in urls:
    # Rothlaigh Gníomhaire Úsáideora le haghaidh gach iarraidh chun braite a sheachaint
    headers = {
        'User-Agent': random.choice(user_agents)
    }

    # Úsáid seachvótálaí difriúil le haghaidh gach iarraidh chun blocáil IP a sheachaint
    proxy = random.choice(proxies)

    try:
        # Seol Get Iarratas chuig URL Craigslist le ceanntásca agus seachvótálaí
        response = requests.get(url, headers=headers, proxies=proxy, timeout=30, verify=False)
        
        # Seiceáil an raibh an t -iarratas rathúil (Cód Stádas 200)
        if response.status_code == 200:
            # Ábhar HTML a pharsáil ar an bhfreagra
            html_content = response.text
            soup = BeautifulSoup(html_content, 'html.parser')

            # Sonraí a bhaint as an HTML parsáilte
            title = soup.find('span', id='titletextonly').text.strip()
            price = soup.find('span', class_='price').text.strip()
            description = soup.find('section', id='postingbody').get_text(strip=True, separator='\n')  # Cur síos a bhaint

            # Cuir sonraí scríobtha mar fhoclóir ar an liosta
            scraped_data.append({'Title': title, 'Price': price, 'Description': description})
            print(f"Data scraped for {url}")
        else:
            # Teachtaireacht Earráid Priontáil Má theipeann ar an Iarratas
            print(f"Failed to retrieve {url}. Status code: {response.status_code}")
    except Exception as e:
        # Priontáil Teachtaireacht Eisceachta Má tharlaíonn earráid le linn scríobadh
        print(f"Exception occurred while scraping {url}: {str(e)}")

# Socrú comhad CSV chun sonraí scríobtha a stóráil
csv_file = 'craigslist_data.csv'
fieldnames = ['Title', 'Price', 'Description']

# Sonraí scríobtha 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)

        # Scríobh sraith header sa chomhad CSV
        writer.writeheader()

        # Iterate trí liosta scraped_data agus scríobh gach mír chuig an gcomhad CSV
        for item in scraped_data:
            writer.writerow(item)

    # Teachtaireacht Rath Priontáil Má Shábháiltear Sonraí go rathúil
    print(f"Data saved to {csv_file}")
except IOError:
    # Teachtaireacht Earráid Priontáil Má tá ioerror agus tú ag scríobh chuig an gcomhad CSV
    print(f"Error occurred while writing data to {csv_file}")

Tá Craigslist tábhachtach toisc go soláthraíonn sé áit inar féidir linn fógraí rangaithe a aimsiú a thugann eolas úsáideach dúinn chun margaí a scrúdú, ag aimsiú toradh i measc daoine eile. Is furasta python a scríobadh go héasca ag python ag baint úsáide as leabharlanna ar nós BeautifulSoup agus iarraidh. Tá na príomh -oirbhearta a pléadh sa rang teagaisc seo ag láimhseáil ábhar dinimiciúil agus seachvótálaithe rothlacha. Trí Python a ghiaráil go freagrach, is féidir leat léargais inchaingne a bhaint as liostaí Craigslist, ag tacú le cinnteoireacht eolasach thar réimsí éagsúla.

Tuairimí:

0 tuairimí