java爬取豆瓣网电影数据

该博客主要围绕使用Java语言爬取豆瓣网数据展开,虽未给出具体内容,但可知核心是利用Java进行数据爬取操作,这在信息技术领域的数据采集方面有一定应用。
String url = "https://movie.douban.com/top250?start=";
		String link = "&filter=";
		int num = 150;
		while(num < 250){
			String uri = url+num+link;
			Document document = Jsoup.connect(uri).get();
			Elements ByTag = document.getElementsByTag("ol");
			Elements li = ByTag.select("li");
			for(int i = 0;i<li.size();i++){
				
				String text = li.get(i).select("div.pic").get(0).select("em").get(0).text();
				String view = "电影排名:"+text;
				System.out.println("电影排名:"+view);
				String hrefAddr = li.get(i).select("div.pic").get(0).select("a").attr("href");
				System.out.println("电影连接:"+hrefAddr);
				
				//========================*详情页面爬取开始*=========================
						Document docum = Jsoup.connect(hrefAddr).get();
						String daoyan = docum.select("div#info").select("span.attrs").get(0).text();
						System.out.println("导演:"+daoyan);
						String jieshao = docum.select("div#link-report").select("span[property=v:summary]").get(0).text();
						System.out.println("剧情介绍:"+jieshao);
				//========================*详情页面爬取结束*=========================
				String imgurl = li.get(i).select("a").get(0).select("img").attr("src");
				String imgalt = li.get(i).select("a").get(0).select("img").attr("alt");
				System.out.println("电影名称:"+imgalt);
				System.out.println("图片地址:"+imgurl);
				Elements hd = li.get(i).select("div.hd");
				Element title = hd.select("a[href]").get(0);
				String titleContent = title.text();
				String titleView = "电影标题:"+titleContent;
				System.out.println(titleView);
				
				Element bd = li.get(i).select("div.bd").get(0);
				Elements pContext = bd.select("p");
				Element selectFirst = pContext.first();
				String fristP = selectFirst.text();
				String repon = "电影演员:"+fristP;
				System.out.println(repon);
				Elements star = bd.select("div.star");
				String score = star.select("span.rating_num").text();
				String pinfen = "电影评分:"+score;
				System.out.println(pinfen);
				String lastSpan = star.select("span").last().text();
				String count ="评价人数:"+lastSpan;
				System.out.println(count);
				Elements quote = bd.select("p.quote");
				String mothod = quote.select("span.inq").text();
				String miaoshu ="电影描述:"+mothod+"\n\n";
				System.out.println(miaoshu);
				String regEx="[^0-9]";  
			    Pattern p = Pattern.compile(regEx);  
			}
			num += 25;
		}

 

Java中,使用Selenium WebDriver和Apache POI(对于生成Excel表格)库可以创建一个简单的爬虫脚本来从豆瓣网抓取数据并将其存入Excel。以下是一个基本的例子: 首先,确保已经添加了以下依赖: ```xml <!-- Maven --> <dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-java</artifactId> <version>3.x.x</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>4.x.x</version> </dependency> ``` 然后编写Java代码: ```java import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.WebElement; import org.openqa.selenium.chrome.ChromeDriver; import org.apache.poi.ss.usermodel.*; import java.io.File; public class DoubanSpider { private static final String CHROME_DRIVER_PATH = "path/to/chromedriver.exe"; // 替换为实际路径 public static void main(String[] args) { try { // 初始化Chrome浏览器 System.setProperty("webdriver.chrome.driver", CHROME_DRIVER_PATH); WebDriver driver = new ChromeDriver(); // 访问豆瓣首页 driver.get("https://www.douban.com"); // 寻找并点击电影排行榜 WebElement rankings = driver.findElement(By.cssSelector(".rankings")); // CSS选择器可能会因网站结构变化而改变 rankings.click(); // 获取表格数据 List<WebElement> tableRows = driver.findElements(By.tagName("tr")); int rowCount = tableRows.size() - 1; // 减一,因为第一行通常是表头 Workbook workbook = new XSSFWorkbook(); // 创建一个新的Excel工作簿 Sheet sheet = workbook.createSheet("豆瓣电影排行榜"); // 创建新的工作表 Row headerRow = sheet.createRow(0); Cell movieTitleCell = headerRow.createCell(0); movieTitleCell.setCellValue("电影名称"); // 添加其他列头... for (int i = 1; i <= rowCount; i++) { Row row = sheet.createRow(i); WebElement rowData = tableRows.get(i); WebElement titleElement = rowData.findElement(By.tagName("a")); // 获取电影标题 Cell movieTitleCell = row.createCell(0); movieTitleCell.setCellValue(titleElement.getText()); // 获取其他列数据... } // 保存到Excel文件 File outputFile = new File("douban_movies.xlsx"); workbook.write(outputFile); driver.quit(); } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:这只是一个基础示例,实际爬取过程中可能需要处理更多细节,例如动态加载内容、登录验证、反爬策略等,并且CSS选择器会随着页面设计变化而变化。在使用时请遵守豆瓣的使用条款和政策。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值