记录webscraper的使用过程
這個記錄一下webscraper的使用過程。幫朋友爬取山東慈善總會的網頁。由于比較簡單,我不想寫代碼了,就用webscraper把。
首先是網站上的新聞,如圖:
這個新聞有13頁,都是比較簡單的網頁。問題在于要爬去多個頁面,然后提取二級頁面的內容。
使用webscraper,?
這里就是需要二級頁面的內容,包括title, time, content。links是設置的鏈接。?頁面的鏈接形式自由最后一個數字在變:
eaa-7aef73cf6329&page=2
如下:
?所以startI_url 就用中括號, 從1-13, 設置步長為1.這樣就會爬取13也的新聞標題。
?
?然后,建立一個選擇器。設置名字是links, type 這里要選擇link,因為是鏈接,需要點擊進去,多選選中,然后點選每一個標題,就可以得到新聞的鏈接。
?保存這個而選擇, 在下面在設置其他三個選擇器。
這里需要輸入名字是title, 需要點擊進入一個二級頁面。然后進一步選擇標題,時間,內容,逐個設置。
?
?設置好了以后,是這樣的。
可以看到他們的父選擇器是links。是上面的最開始的新聞目錄頁。
然后開始愉快的爬取。很快。?
下一步是爬取微博。
微博比較討厭,一直頭大,后來想了想,還是不寫代碼了。不管寫代碼和是其他,都得訪問微博手機版。因為微博電腦版很麻煩。所以推薦使用手機版。就是在電腦里登陸微博手機版。
比如山東慈善總會的微博。
電腦版是這樣的
而,手機版是這樣的。
?如果使用代碼,那么就需要分析這個地址。
?https://m.weibo.cn/api/container/getIndex?uid=5676362252&t=0&luicode=10000011&lfid=100103type%3D1%26q%3D%E5%B1%B1%E4%B8%9C%E6%85%88%E5%96%84%E6%80%BB%E4%BC%9A&type=uid&value=5676362252&containerid=1076035676362252&since_id=4613643721770979
就是旁邊兩個xhr應該是都可以。然后變成json,提取內容。也不是很麻煩。但是本著能省事就省事的原則,還是不想寫代碼。
就用webscraper把。
微博手機版要爬去,需要使用webscraper里面的 元素滾動選擇器。
具體是這樣的。
?首先新建一個container,他是ellement scroll down ,這里點select,選擇每一個微博的卡片。
?
這里需要注意的一點是,首頁有一個置頂微博,不用選,如果選它,就會影響后面的一般微博的選擇。
select的css是:
div:nth-of-type(n+4) div.card-wrap
其實我是有點懷疑這個css對不對。感覺好復雜,而且不一定能夠找到元素。不符合一點簡潔的原則,如果寫代碼的話,我肯定不會這樣用css。另外我還加上一個控制元素數量的css, 就是:
nth-of-type(-n+100),這個是通過別的網頁看到的。但是這個功能以前我也用過。在代碼里面。沒想到webscraper里也可以這樣用, 就試試吧。
完整的選擇器
div:nth-of-type(n+4) div.card-wrap:nth-of-type(-n+100)
滾動100次,提取每一次所有的微博卡片內容。另外,我看有些微博,還有全文鏈接。手賤又提取了全文的主要內容。
?最后是這樣的。
?因位微博是簡要內容,所以是brief,如果有全文鏈接,那么就提取全文。就是href里面的內容。
?href里又弄了一個。
?腫起來是這樣的。
不過,webscraper好像沒有sleep功能。 我只找到延時,設置了3000ms
?
?后來,微博因位請求太頻繁,直接給我
?來了個小雞, 不過好在山東省慈善總會的內容不多,基本上也爬完了。除了小雞,我也不糾結了。保存成csv發給同事了
我向應該是我爬取全文,造成訪問太頻繁的原因。
總體來說還行,webscraper使用確實極大提高了工作效率,不用寫頭大的代碼了。
總結
以上是生活随笔為你收集整理的记录webscraper的使用过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么有些人特别招蚊子?
- 下一篇: matplotlib 制作不等间距直方图