Python爬虫案例:使用Selenium爬取一带一路网新闻
来自CloudWiki
访问网页
from selenium import webdriver #导入包 import time from selenium.webdriver.common.keys import Keys from bs4 import BeautifulSoup import csv #利用selenium登录网页 driver = webdriver.Chrome("C:/Program Files (x86)/Google/Chrome/Application/chromedriver.exe") #打开Chrome浏览器 driver.get('https://www.yidaiyilu.gov.cn/info/iList.jsp?cat_id=10005') #输入url time.sleep(60)#因为网站需验证码,故开始留出60秒的时间人工填验证码 print("访问成功!")
定位并返回网页上新闻信息
def find_result( ): soup = BeautifulSoup(driver.page_source, "html.parser") newslist = soup.find_all("div", {'class': 'left_content'}) # 找到每个新闻的'盒子' url ="https://www.yidaiyilu.gov.cn" x = 0 item_list = [ ] for news in newslist: #print(news) y =0 item = [] item.append(x+1) for child in news.children: if child.name == 'a' and y ==0: y =1; item.append(url +child['href'])#将每一个新闻的原始装进列表 item.append(child.h1.string) elif child.name == 'a' and y ==1: item.append(child.p.string) item_list.append(item)#将每一个‘新闻列表’装进列表 x += 1 print(item_list) return item_list #返回‘所有新闻'的列表 #driver.close()
将新闻信息保存到csv文件
def save_csv(item_list,file_name): with open(file_name, 'a', newline='') as fp: test_writer = csv.writer(fp, delimiter=',', quotechar='"') for item in item_list: test_writer.writerow(item)
调用函数,开始爬取
#爬取第1页的新闻 item_list = find_result() save_csv(item_list,"onebelt.csv") time.sleep(10) #爬取第2~10页的新闻 for i in range(2,11): driver.get('https://www.yidaiyilu.gov.cn/info/iList.jsp?cat_id=10005&cur_page='+str(i)) item_list = find_result() save_csv(item_list,"onebelt.csv"); time.sleep(10)