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)