网页数据抓取(2019独角兽企业重金招聘Python工程师标准(gt)(组图) )

优采云 发布时间: 2021-12-06 03:16

  网页数据抓取(2019独角兽企业重金招聘Python工程师标准(gt)(组图)

)

  2019年独角兽企业重磅Python工程师招聘标准>>>

  

  使用Selenium记录前端渲染数据

  这几天打算用程序来抓取网站的下一个数据。具体哪个我就不说了,为了减少体力,省点力气。技术使用Java、Selenium、chromeDriver、系统ubuntu16.04

  开始查网站的源码,看到了网站使用的模板方式,

  

> /etc/apt/sources.list.d/google.list'

sudo apt-get update

sudo apt-get install google-chrome-stable

  测试chromeDriver是否正常运行。最初,阿里云ECS安装的是centos6.8系统。安装linux chrome并运行chromeDriver后,遇到各种找不到的库。我一直按照提示安装后,还是有问题。谷歌发现CentOS对chrome的支持不是很好(我没有继续追查原因,如果有懂的朋友希望澄清一下,谢谢),我换成了ubuntu 16.04 ,测试正常

  root@iZj6c1imv6wpn7tfmm7nusZ:/work/fantasy# ./chromedriver

Starting ChromeDriver 2.37.544315 (730aa6a5fdba159ac9f4c1e8cbc59bf1b5ce12b7) on port 9515

Only local connections are allowed.

  抓取页面的java代码,并使用chromeDriver进行渲染。您可以正常使用 xpath 来查找 html 元素。基本用法是使用By的搜索方法,可以通过id、class、tag等进行搜索。

  这里有几点需要注意

  需要设置选项,

  准备工作做完了,可以抓数据了。摆脱手动定时查看,需要通知的时候可以使用bearychat向自己或团队发送通知,做一个快乐的程序员

  java爬取分析代码

   private WebDriver webDriver;

public XXXSpider() {

String driver = System.getProperty("webdriver.chrome.driver");

if (driver == null) {

logger.info("没有设置 driver 变量");

System.getProperties().setProperty("webdriver.chrome.driver", "/Users/chengpanwang/Downloads/chromedriver");

} else {

logger.info("driver: {}", driver);

}

}

public BigDecimal pageDetail(String url) {

logger.info("详情页: {}", url);

........

try {

ChromeOptions options = new ChromeOptions();

options.addArguments("--headless");

options.addArguments("--disable-gpu");

options.addArguments("--no-sandbox");

webDriver = new ChromeDriver(options);

webDriver.get(url);

WebElement webElement = webDriver.findElement(By.xpath("/html"));

WebElement roleSkill = webElement.findElement(By.id("role_skill"));

logger.info(roleSkill.getText());

logger.info("选中技术标签");

roleSkill.click();

WebElement skillTb = webElement.findElement(By.className("skillTb"));

for (WebElement item : skillTb.findElements(By.tagName("td"))) {

String level = item.findElement(By.tagName("p")).getText();

String h5 = item.findElement(By.tagName("h5")).getText();

.... 具体业务代码

}

webDriver.close();

} catch (Exception e) {

logger.error("", e);

}

return price;

}

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线