python爬取搜狐汽车相关文章

大多数男生都是汽车迷,我也不例外。最近一直逛汽车相关的论坛,期待有天可以买到自己的一辆车。
吉利汽车新出的博越上市以来,销量一直位列前茅,且配置也不赖。长期逛论坛费时费力,遂运用自己略懂的爬虫技术爬取相关新闻,细细浏览。

说明:此代码仅供技术交流,禁止用于商业用户。

  • 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)
  • 感谢浏览
    如有问题,欢迎交流。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值