暑假学习 Python爬虫基础(2)

关于第一篇的项目的扩展--尝试爬取一下虎扑上的一下贴子的数据(这个在后面的学习中补充上来)

python的json模块主要的两个函数

json.dumps()将python对象转换成json对象

json.loads()将json对象转换成python对象

这几天在学习如何爬取https://www.biqukan.com/上的小说,遇到了一些问题,就没有写文章,下面将这些问题和一些知识点总结一下

第一个问题就是爬出的中文是乱码的,解决办法就是

req.encoding = "GBK"

第二个问题就是无法爬出全部的文字只有最后一段,原因好像是网站的标签不规范,解决办法就是

soup.prettify()

但是这样处理过后,就变成了字符串,无法使用find_all()。于是就改用使用webdriver尝试一下,没想到就成功了

无痕浏览器 phantomjs() 但是selenium已经弃用了phantomjs,解决方案之一就是

from selenium.webdriver.chrome.options import  Options

chrome_options =  Options()
chrome_options.add_argument('--headless')
driver = webdriver.Chrome(chrome_options = chrome_options)

 

下面就来进行一下关于BeatuifulSoup和Selenium相关知识的总结,加深一下记忆

BeautifulSoup将复杂的html文档转换成一个复杂的树形结构,每一个节点都是Python对象,所有对象可以划分为4类

Tag NavigableString BeautifulSoup Comment 

Tag

就是html中的标签,他查找的是在所有内容中的第一个符合要求的标签,如

<title>Python</title>

调用的方法就是 soup.title    输出结果就是<title>Python</title>

NavigableString

得到了标签,要想得到标签里面的内容的话,用.string就可以了

soup.title.string

#输出 Python

遍历文档树

find_all(name,attrs,recursive,text,limit,**kawargs)

#最常用的要在方式就是
find_all('div',class_ ='text')
#查找所有class为text类的div标签

Selenium

元素选取API

#单个元素选取
find_element_by_id
find_element_by_name
find_element_by_xpath
find_element_by_link_text
find_element_by_partial_link_text
find_element_by_tag_name
find_element_by_class_name
find_element_by_css_selector

#多个元素选取
find_elements_by_name
find_elements_by_xpath
find_elements_by_link_text
find_elements_by_partial_link_text
find_elements_by_tag_name
find_elements_by_class_name
find_elements_by_css_selector

 

还可以用By类来确定使用哪种选择方式

from selenium.webdriver.common.by import By

driver.find_element(By.xpath,'')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值