В этой статье приводится реальный пример, как с помощью Selenium WebDriver можно парсить разные данные с веб-страницы и записывать в csv файл.
Для написания использовалась Java. Программа парсит названия книг и их авторов с сайта Amazon.
Код тянет данные только на одной странице, но можно использовать еще один цикл for(), для навигации по всем страницам.
Как настроить проект, например в Eclipse, и добавить библиотеки вебдрайвера можно посмотреть в этой статье.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import java.io.*; import java.util.*; import java.util.regex.*; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; public class FetchAllBooks { public static void main(String[] args) throws IOException { WebDriver driver = new FirefoxDriver(); driver.navigate().to("http://www.amazon.com/tag/center%20right?ref_=tag_dpp_cust_itdp_s_t&store=1"); List<WebElement> allAuthors = driver.findElements(By.className("tgProductAuthor")); List<WebElement> allTitles = driver.findElements(By.className("tgProductTitleText")); int i=0; String fileText = ""; for (WebElement author : allAuthors){ String authorName = author.getText(); String Url = (String)((JavascriptExecutor)driver).executeScript("return arguments[0].innerHTML;", allTitles.get(i++)); final Pattern pattern = Pattern.compile("title=(.+?)>"); final Matcher matcher = pattern.matcher(Url); matcher.find(); String title = matcher.group(1); fileText = fileText+authorName+","+title+"\n"; } Writer writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("books.csv"), "utf-8")); writer.write(fileText); writer.close(); driver.close(); } } |
После выполнения скрипта в корне проекта можно найти файл “books.csv”: