大多数男生都是汽车迷,我也不例外。最近一直逛汽车相关的论坛,期待有天可以买到自己的一辆车。
吉利汽车新出的博越上市以来,销量一直位列前茅,且配置也不赖。长期逛论坛费时费力,遂运用自己略懂的爬虫技术爬取相关新闻,细细浏览。
说明:此代码仅供技术交流,禁止用于商业用户。
- python环境
pyhton3.5 - 相关依赖包及版本
request 2.22.0、pandas 0.25.3、bs4 4.6.0 - 直接上代码
import time
import random
import requests
import pandas as pd
from bs4 import BeautifulSoup
# 设置header
header = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}
def soup_url(kera_http, encoding='utf-8'):
# 定义一个解析网页基础函数
# 解析url
# encoding 设置网页编码
session = requests.session()
souped = session.get(kera_http, headers=header)
souped.encoding = encoding
soup = BeautifulSoup(souped.text, 'html.parser')
session.close()
return soup
n = 3 # 定义需要爬取的新闻页数
by_url = []
for i in range(1, n):
by_url_mid = 'http://s.auto.sohu.com/search.at?keyword=%E5%8D%9A%E8%B6%8A&sugType=1&id=4900&page='+str(i)
by_url.append(by_url_mid)
df_all = []
for p, uu in enumerate(by_url):
print('当前正在爬取第{}页'.format(p+1))
time.sleep(random.randint(1, 5))
soup = soup_url(uu)
urls = []
date_all = []
title_all = []
tt = soup.find_all('div', {'class': 'sechCon_list'})
for j in tt:
try:
second_url = j.select('a')[0].attrs['href']
urls.append(second_url)
except:
urls.append('null')
try:
date = j.select('footer')[0].select('span')[0].text
date_all.append(date)
except:
date_all.append('null')
try:
title = j.select('a')[0].text
title_all.append(title)
except:
title_all.append('null')
msg_all = []
for uuu in urls:
time.sleep(random.randint(1, 5))
soup2 = soup_url(uuu)
tt = soup2.find_all('article', {'class': 'article-text'})
try:
msg = tt[0].select('p')[0].text.strip()
msg_all.append(msg)
except:
msg_all.append('null')
df = pd.DataFrame({'title': title_all,
'date': date_all,
'urls': urls,
'msg': msg_all})
df['page'] = p+1
df_all.append(df)
df_res = pd.concat(df_all)
df_res.to_csv('my_file.csv', index=False)
- 感谢浏览
如有问题,欢迎交流。