Compare commits
2 Commits
edge
...
0e6df98a50
| Author | SHA1 | Date | |
|---|---|---|---|
| 0e6df98a50 | |||
| d0bfe15fa4 |
@ -1,20 +1,4 @@
|
|||||||
rank,Latitude,Longitude,Name of City,Country,2021 Population,2020 Population,Growth,Population Difference,Population Change
|
rank,Latitude,Longitude,Name of City,Country,2021 Population,2020 Population,Growth,Population Difference,Population Change
|
||||||
1,35.6828387,139.7594549,Tokyo,Japan,37339804,37393128,-0.0014,53324,declined
|
|
||||||
2,28.6517178,77.2219388,Delhi,India,31181376,30290936,0.0294,890440,grew
|
|
||||||
3,31.2322758,121.4692071,Shanghai,China,27795702,27058480,0.0272,737222,grew
|
|
||||||
4,-23.5506507,-46.6333824,Sao Paulo,Brazil,22237472,22043028,0.0088,194444,grew
|
|
||||||
5,19.4326296,-99.1331785,Mexico City,Mexico,21918936,21782378,0.0063,136558,grew
|
|
||||||
6,23.7861979,90.4026151,Dhaka,Bangladesh,21741090,21005860,0.035,735230,grew
|
|
||||||
7,30.0443879,31.2357257,Cairo,Egypt,21322750,20900604,0.0202,422146,grew
|
|
||||||
8,39.906217,116.3912757,Beijing,China,20896820,20462610,0.0212,434210,grew
|
|
||||||
9,19.0759899,72.8773928,Mumbai,India,20667656,20411274,0.0126,256382,grew
|
|
||||||
10,34.6198813,135.490357,Osaka,Japan,19110616,19165340,-0.0029,54724,declined
|
|
||||||
11,24.8546842,67.0207055,Karachi,Pakistan,16459472,16093786,0.0227,365686,grew
|
|
||||||
12,29.5647398,106.5478767,Chongqing,China,16382376,15872179,0.0321,510197,grew
|
|
||||||
13,41.0096334,28.9651646,Istanbul,Turkey,15415197,15190336,0.0148,224861,grew
|
|
||||||
14,-34.6075682,-58.4370894,Buenos Aires,Argentina,15257673,15153729,0.0069,103944,grew
|
|
||||||
15,22.5414185,88.3576912,Kolkata,India,14974073,14850066,0.0084,124007,grew
|
|
||||||
16,-4.3217055,15.3125974,Kinshasa,DR Congo,14970460,14342439,0.0438,628021,grew
|
|
||||||
17,6.4550575,3.3941795,Lagos,Nigeria,14862111,14368332,0.0344,493779,grew
|
17,6.4550575,3.3941795,Lagos,Nigeria,14862111,14368332,0.0344,493779,grew
|
||||||
18,14.5907332,120.9809674,Manila,Philippines,14158573,13923452,0.0169,235121,grew
|
18,14.5907332,120.9809674,Manila,Philippines,14158573,13923452,0.0169,235121,grew
|
||||||
19,39.0856735,117.1951073,Tianjin,China,13794450,13589078,0.0151,205372,grew
|
19,39.0856735,117.1951073,Tianjin,China,13794450,13589078,0.0151,205372,grew
|
||||||
|
|||||||
|
2098
data/contact_info.csv
Normal file
2098
data/contact_info.csv
Normal file
File diff suppressed because it is too large
Load Diff
15
src/index.ts
15
src/index.ts
@ -9,7 +9,7 @@ import chrome, { ServiceBuilder } from 'selenium-webdriver/chrome';
|
|||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { getCities } from './lib/cities';
|
import { getCities } from './lib/cities';
|
||||||
import { WebDriverUtils, saveContactInfoToCSV } from './lib/utils';
|
import { WebDriverUtils, saveContactInfoToCSV, useExistingChrome, disableCookiesInChrome } from './lib/utils';
|
||||||
import * as UIActions from './lib/UIActions';
|
import * as UIActions from './lib/UIActions';
|
||||||
import { randomUUID } from 'crypto';
|
import { randomUUID } from 'crypto';
|
||||||
|
|
||||||
@ -23,17 +23,8 @@ async function visitCityPages(): Promise<void> {
|
|||||||
|
|
||||||
console.log('Connecting to existing Chrome browser...');
|
console.log('Connecting to existing Chrome browser...');
|
||||||
|
|
||||||
// Connect to an existing Chrome browser running in debug mode on port 9222
|
const driver = await useExistingChrome();
|
||||||
const options = new chrome.Options();
|
if (!driver) return;
|
||||||
|
|
||||||
// Set the debugger address to connect to the existing Chrome instance
|
|
||||||
options.debuggerAddress('localhost:9222');
|
|
||||||
|
|
||||||
// Create WebDriver instance that connects to the existing browser
|
|
||||||
const driver: WebDriver = await new Builder()
|
|
||||||
.forBrowser('chrome')
|
|
||||||
.setChromeOptions(options)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
// Visit each city's TripAdvisor page
|
// Visit each city's TripAdvisor page
|
||||||
for (let i = 0; i < cities.length; i++) {
|
for (let i = 0; i < cities.length; i++) {
|
||||||
|
|||||||
@ -2,7 +2,8 @@
|
|||||||
* Utility class for common WebDriver operations
|
* Utility class for common WebDriver operations
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import { WebDriver, By, until } from 'selenium-webdriver';
|
import { Builder, By, until, WebDriver } from 'selenium-webdriver';
|
||||||
|
import chrome from 'selenium-webdriver/chrome';
|
||||||
import { writeFileSync, existsSync, appendFileSync } from 'fs';
|
import { writeFileSync, existsSync, appendFileSync } from 'fs';
|
||||||
import * as path from 'path';
|
import * as path from 'path';
|
||||||
import { ContactInfo } from './types';
|
import { ContactInfo } from './types';
|
||||||
@ -43,3 +44,58 @@ export function saveContactInfoToCSV(city: string, contactInfo: ContactInfo, fil
|
|||||||
|
|
||||||
console.log(`Contact info saved to ${filePath}`);
|
console.log(`Contact info saved to ${filePath}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function disableCookiesInChrome(): Promise<WebDriver | null> {
|
||||||
|
// Set Chrome options
|
||||||
|
const options = new chrome.Options();
|
||||||
|
|
||||||
|
// 1. Block all cookies
|
||||||
|
//options.setUserPreferences({
|
||||||
|
// 'profile.default_content_setting_values.cookies': 2, // 2 = Block all
|
||||||
|
// 'profile.block_third_party_cookies': true
|
||||||
|
//});
|
||||||
|
|
||||||
|
// 2. Optional: Launch in incognito for extra privacy
|
||||||
|
options.addArguments('--incognito');
|
||||||
|
options.addArguments('--start-maximized');
|
||||||
|
|
||||||
|
let driver: WebDriver | null = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
driver = await new Builder()
|
||||||
|
.forBrowser('chrome')
|
||||||
|
.setChromeOptions(options)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
await driver.get('https://www.tripadvisor.com/');
|
||||||
|
|
||||||
|
console.log('Chrome launched with cookies disabled.');
|
||||||
|
|
||||||
|
// Optional: Verify cookies are blocked by trying to set/get a cookie
|
||||||
|
await driver.manage().addCookie({ name: 'test', value: '123' });
|
||||||
|
const cookies = await driver.manage().getCookies();
|
||||||
|
console.log('Cookies after trying to add:', cookies); // Should be empty or restricted
|
||||||
|
|
||||||
|
return driver;
|
||||||
|
} catch (error) {
|
||||||
|
console.error('Error:', error);
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function useExistingChrome(): Promise<WebDriver> {
|
||||||
|
// Connect to an existing Chrome browser running in debug mode on port 9222
|
||||||
|
const options = new chrome.Options();
|
||||||
|
|
||||||
|
// Set the debugger address to connect to the existing Chrome instance
|
||||||
|
options.debuggerAddress('localhost:9222');
|
||||||
|
|
||||||
|
// Create WebDriver instance that connects to the existing browser
|
||||||
|
const driver: WebDriver = await new Builder()
|
||||||
|
.forBrowser('chrome')
|
||||||
|
.setChromeOptions(options)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
return driver;
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user