感谢Datawhale组织的学习,经过这几天的学习,已经初步了解了简单的python爬虫实现,这里简单介绍一个新闻的爬虫实现。
爬取新闻
- 了解ajax加载
- 通过chrome的开发者工具,监控网络请求,并分析
- 用selenium完成爬虫
- 具体流程如下:
用selenium爬取https://news.qq.com/ 的热点精选
至少爬50个出来,存储成csv
之所以要使用selenium,是因为新闻的网页是动态的,它会根据使用的操作来加载,因此需要selenium模拟用户的操作。
import time
from selenium import webdriver
from bs4 import BeautifulSoup
import csv
如果静态的打开新闻的网页,仅能加载出10条新闻,若想加载的更多需要将鼠标滚动到页面底部,为了安全起见,每次操作的前后都sleep1秒
翻页的次数根据要爬取的新闻数进行估算
def getHTMLText(url, num):
driver = webdriver.Chrome()
driver.get(url)
#driver.get("https://news.qq.com/")
page = int(num/10) + 1
for i in range(page):
time.sleep(1)
#鼠标滚动到页面最低部,为了加载后面的新闻
driver.execute_script("window.scrollTo(0,document.body.scrollHeight)