如何抓取C#中附加的每个页面代码?

时间:2017-07-21 02:44:52

标签: c# html selenium web-scraping web-crawler

我正在尝试抓取http://stock.hankyung.com/news/app/newslist.php?cid=01的网站。

我的编码应该抓取每个标题仅为第一页提供的所有信息。现在我想在完成第一页后抓取,我想抓取下一页并按照1-> 2-> 3->。

enter image description here

2 个答案:

答案 0 :(得分:1)

您在链接中有页码。

    int page_number;
    string url_link = "http://stock.hankyung.com/news/app/newslist.php?cid=01&page=";
    for (int i = 1; i <= page_numnber; i++) {
      driver.Navigate().GoToUrl(url_link + i);
      // Code here
    }

我希望它有所帮助

编辑:  当您检查下面的最后一页按钮时

<a href="http://stock.hankyung.com/news/app/newslist.php?cid=01&page=43940" class="btn last">

您可以使用

选择元素
   IWebElement lastPageElement = driver.FindElement(By.XPath("//a[@class='btn last']"));

然后选择href属性。

string page_number_string = lastPageElement.GetAttribute("href");

然后从中获取一个子串

page_number_string = page_number_string .Substring(60);

string投射到int

int page_number= Int32.Parse(page_number_string);

最后它会是这样的:

  driver.Navigate().GoToUrl("http://stock.hankyung.com/news/app/newslist.php?cid=01");
  System.Threading.Thread.Sleep(1000);
  IWebElement lastPageElement = driver.FindElement(By.XPath("//a[@class='btn last']"));
  string page_number_string = lastPageElement.GetAttribute("href");
  page_number_string = page_number_string .Substring(60);
  int page_number Int32.Parse(page_number_string);
  string url_link = "http://stock.hankyung.com/news/app/newslist.php?cid=01&page=";
     for (int i = 1; i <= page_number; i++) {
        driver.Navigate().GoToUrl(url_link + i);
        // Code here
     }

答案 1 :(得分:0)

从链接使用查询字符串属性page来访问每个页面,例如 要达到第4页,链接就像这样

http://stock.hankyung.com/news/app/newslist.php?cid=01&page=4

你可以使用循环来访问所有页面