公司的爬虫项目:爬取数据,以满足文本分析,词频统计的需要。由同事整理好所需链接存入excel,我直接打开连接,爬取网站数据。由于仅仅需要进行词频分析,不需要进一步的挖掘,又因为不同网站源码差距很大,故采取了简单的将整个页面获取并用soup.get_text()方法提取文本信息。全程自动化运行。
因为不同网站源码差距很大,将整个页面源码爬取并存储的方法,包含太多的源代码,无法用于进一步的文本分析。下一步可以进利用机器学习技术对网页信息进行文本信息提取。
代码如下:
from bs4 import BeautifulSoup
from selenium import webdriver
import time
import re
from elasticsearch import Elasticsearch
from w3lib.html import remove_tags
import pandas as pd
from pandas import DataFrame
data_all=pd.read_excel("/result_retest.xlsx")
source_url=data_all['source_url']
text_data=data_all['text_data']
index=data_all['index']
print(u'这个程序要开始疯狂的运转啦')
options = webdriver.firefox.options.Options()
driver = webdriver.Firefox(executable_path='/geckodriver-v0.21.0-win64/geckodriver',
firefox_options=options)
driver.set_page_load_timeout(10) #设置超时时间
for i in range(len(source_url)):
try:
if data_all['text_data'].isna()[i]:
url_i=source_url[i]
driver.get(url_i)
time.sleep(1)
soup = BeautifulSoup(driver.page_source, "lxml")
#data="去标签"
data=soup.get_text()
data=re.sub("\xa0",'',data)
data=re.sub("\t",'',data)
data=re.sub("\n",'',data)
data=re.sub("\u3000",'',data)
data_all['text_data'][i]=data
data_result=DataFrame(data_all)
data_result.to_excel("result_retest.xlsx") # 防止数据丢失,每爬取一个重写一次
print(i)
else:
continue
except:
continue