Agus na ceannlínte nuachta is déanaí á mbailiú, ag déanamh monatóireachta ar threochtaí nuachta, agus ag déanamh anailíse meon ar chúrsaí reatha, is uirlis luachmhar é scríobadh Google News. San alt seo, treoróimid tú tríd an bpróiseas chun Google News a scríobadh trí Python. Fostóimid leabharlann iarratais chun ábhar leathanaigh a fháil; LXML chun doiciméid HTML a pharsáil agus sonraí a bhaint amach. Faoi dheireadh an teagaisc seo, foghlaimeoidh tú conas ceannlínte nuachta agus a naisc faoi seach a bhaint as Google News go formáid Struchtúrtha JSON.
Sula dtosaímid, déan cinnte go bhfuil python suiteáilte agat ar do chóras. Is féidir leat na leabharlanna riachtanacha a shuiteáil trí na horduithe seo a leanas a reáchtáil:
pip install requests
pip install lxml
Tabharfaidh na leabharlanna seo deis dúinn iarratais HTTP a dhéanamh agus ábhar HTML an leathanaigh ghréasáin a pharsáil.
Beimid ag scríobadh leathanach Google News ag an URL seo a leanas:
URL = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
Tá il -earraí nuachta sa leathanach seo, gach ceann acu le príomh -cheannlíne agus earraí gaolmhara. Seo a leanas an struchtúr XPath do na míreanna seo:
Tá struchtúr HTML Google News fós comhsheasmhach ar fud leathanaigh éagsúla, ag cinntiú go bhfuil na heilimintí sonraithe XPath infheidhme go huilíoch.
Tosóimid trí ábhar an leathanaigh Google News a fháil ag baint úsáide as an Leabharlann Iarrataí. Seo an cód chun ábhar an leathanaigh a fháil:
import requests
url = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
response = requests.get(url)
if response.status_code == 200:
page_content = response.content
else:
print(f"Failed to retrieve the page. Status code: {response.status_code}")
Seolann an cód seo iarratas GET chuig URL Google News agus stórálann sé ábhar HTML an leathanaigh san athróg Page_Content.
Leis an ábhar HTML ar láimh, is féidir linn LXML a úsáid chun an leathanach a pharsáil agus na ceannlínte agus na naisc nuachta a bhaint.
from lxml import html
# Parse an t -ábhar HTML
parser = html.fromstring(page_content)
Eagraíonn Google News a chuid earraí i gcoimeádáin shonracha. Déanfaimid na coimeádáin seo a bhaint den chéad uair ag baint úsáide as a gcuid XPath agus ansin déanfaimid iad a athrá chun na ceannlínte agus na naisc nuachta aonair a bhaint amach.
Tá na príomh -ailt nuachta suite faoin xpath seo a leanas:
main_news_elements = parser.xpath('//c-wiz[@jsrenderer="ARwRbe"]')
Is féidir linn lúb a dhéanamh anois tríd an gcéad 10 eilimint bhailí agus na teidil agus na naisc a bhaint as:
news_data = []
for element in main_news_elements[:10]:
title = element.xpath('.//c-wiz/div/article/a/text()')[0]
link = "https://news.google.com" + element.xpath('.//c-wiz/div/article/a/@href')[0][1:]
# A chinntiú go bhfuil sonraí ann sula gceanglaíonn tú ar an liosta
if title and link:
news_data.append({
"main_title": title,
"main_link": link,
})
Tá fo -ailt sa phríomhghné nuachta ina bhfuil nuacht ghaolmhar i láthair. Is féidir linn iad seo a bhaint as cur chuige comhchosúil:
related_articles = []
related_news_elements = element.xpath('.//c-wiz/div/div/article')
for related_element in related_news_elements:
related_title = related_element.xpath('.//a/text()')[0]
related_link = "https://news.google.com" + related_element.xpath('.//a/@href')[0][1:]
related_articles.append({"title": related_title, "link": related_link})
news_data.append({
"main_title": title,
"main_link": link,
"related_articles": related_articles
})
Tar éis na sonraí a bhaint amach, is féidir linn é a shábháil i gcomhad JSON lena úsáid níos déanaí.
import json
with open('google_news_data.json', 'w') as f:
json.dump(news_data, f, indent=4)
Cruthóidh an cód seo comhad darb ainm Google_News_Data.json ina bhfuil na ceannlínte nuachta go léir agus a naisc chomhfhreagracha.
Agus suimeanna móra sonraí á scríobadh, go háirithe ó shuíomhanna ard-tráchta cosúil le Google News, d'fhéadfá teacht ar shaincheisteanna cosúil le blocáil IP nó teorannú ráta. Chun é seo a sheachaint, is féidir leat seachvótálaithe a úsáid. Tugann seachvótálaithe deis duit d'iarratais a chur ar bhealach trí sheoltaí éagsúla IP, rud a chiallaíonn go bhfuil sé níos deacra don láithreán gréasáin do chuid gníomhaíochtaí scríobtha a bhrath agus a bhlocáil.
Don rang teagaisc seo, is féidir leat seachfhreastalaí a úsáid trí na hiarrataí a mhodhnú.
proxies = {
"http": "http://your_proxy_ip:port",
"https": "https://your_proxy_ip:port",
}
response = requests.get(url, proxies=proxies)
Má tá tú ag obair le soláthraí seirbhíse a bhainistíonn uainíocht seachfhreastalaí, ní gá duit ach an tseirbhís a chumrú i do chuid iarrataí. Déileálfaidh an soláthraí leis an uainíocht agus an bhainistíocht linn snámha IP ar a deireadh.
Uaireanta, is féidir le láithreáin ghréasáin iarratais nach bhfuil na ceanntásca cuí acu a bhlocáil, mar shampla teaghrán gníomhaire úsáideora a aithníonn an t-iarratas mar bhrabhsálaí. Is féidir leat do cheanntásca a shaincheapadh chun braite a sheachaint:
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-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'sec-ch-ua-arch': '"x86"',
'sec-ch-ua-bitness': '"64"',
'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-model': '""',
'sec-ch-ua-platform': '"Linux"',
'sec-ch-ua-platform-version': '"6.5.0"',
'sec-ch-ua-wow64': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
response = requests.get(url, headers=headers)
Seo an cód iomlán, ag comhcheangal na gcéimeanna go léir:
import requests
import urllib3
from lxml import html
import json
urllib3.disable_warnings()
# URL agus ceanntásca
url = "https://news.google.com/topics/CAAqKggKIiRDQkFTRlFvSUwyMHZNRGRqTVhZU0JXVnVMVWRDR2dKSlRpZ0FQAQ?hl=en-US&gl=US&ceid=US%3Aen"
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-IN,en;q=0.9',
'cache-control': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'priority': 'u=0, i',
'sec-ch-ua': '"Not)A;Brand";v="99", "Google Chrome";v="127", "Chromium";v="127"',
'sec-ch-ua-arch': '"x86"',
'sec-ch-ua-bitness': '"64"',
'sec-ch-ua-full-version-list': '"Not)A;Brand";v="99.0.0.0", "Google Chrome";v="127.0.6533.72", "Chromium";v="127.0.6533.72"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-model': '""',
'sec-ch-ua-platform': '"Linux"',
'sec-ch-ua-platform-version': '"6.5.0"',
'sec-ch-ua-wow64': '?0',
'sec-fetch-dest': 'document',
'sec-fetch-mode': 'navigate',
'sec-fetch-site': 'none',
'sec-fetch-user': '?1',
'upgrade-insecure-requests': '1',
'user-agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36',
}
# Cumraíocht Proxies (cuir do chuid sonraí seachfhreastalaí in ionad)
proxy = 'ip:port'
proxies = {
"http": f"http://{proxy}",
"https": f"https://{proxy}",
}
# Faigh ábhar an leathanaigh leis na ceanntásca sonraithe agus na seachvótálaithe
response = requests.get(url, headers=headers, proxies=proxies, verify=False)
# Seiceáil an raibh an t -iarratas rathúil
if response.status_code == 200:
page_content = response.content
else:
print(f"Failed to retrieve the page. Status code: {response.status_code}")
exit()
# Parse an t -ábhar HTML ag úsáid LXML
parser = html.fromstring(page_content)
# An príomh -scéal agus na hearraí gaolmhara a bhaint amach
main_news_elements = parser.xpath('//*[@id="i10-panel"]/c-wiz/c-wiz')
# Tús a chur le liosta chun na sonraí nuachta eastósctha a stóráil
news_data = []
# Lúb trí gach príomhghné nuachta
for element in main_news_elements[:10]:
# Sliocht an príomhtheideal nuachta agus an nasc
title = element.xpath('.//c-wiz/div/article/a/text()')
link = element.xpath('.//c-wiz/div/article/a/@href')
# Tús a chur le liosta chun earraí gaolmhara a stóráil don phríomh -nuacht seo
related_articles = []
# Eilimintí nuachta a bhaineann le sliocht laistigh den bhloc céanna
related_news_elements = element.xpath('.//c-wiz/div/div/article')
# Lúb trí gach gné nuachta gaolmhar agus bain an teideal agus an nasc amach
for related_element in related_news_elements:
related_title = related_element.xpath('.//a/text()')[0]
related_link = "https://news.google.com" + related_element.xpath('.//a/@href')[0][1:]
related_articles.append({"title": related_title, "link": related_link})
# Cuir an príomh -scéal agus a chuid earraí gaolmhara leis an liosta news_data
if title is not None:
news_data.append({
"main_title": title,
"main_link": f'https://news.google.com{link}',
"related_articles": related_articles
})
else:
continue
# Sábháil na sonraí eastósctha le comhad JSON
with open("google_news_data.json", "w") as json_file:
json.dump(news_data, json_file, indent=4)
print('Data extraction complete. Saved to google_news_data.json')
Nuair a scríobann sé Google News ag baint úsáide as Python, mar aon leis na hiarratais agus na leabharlanna LXML, éascaíonn anailís mhionsonraithe ar threochtaí nuachta. Tá sé ríthábhachtach seachvótálaithe a chur i bhfeidhm agus ceanntásca iarratais a chumrú chun bloic a sheachaint agus cobhsaíocht scraper a choinneáil. I measc na seachvótálaithe idéalach chun na críche seo tá IPv4 agus IPv6 Datacenter Proxies agus seachvótálaithe ISP, a thairgeann luas ard agus ping íseal. Ina theannta sin, tá seachfhreastalaithe cónaithe dinimiciúla an -éifeachtach mar gheall ar a bhfachtóir iontaobhais níos fearr.
Tuairimí: 0