知乎对selenium有检测,不显示用户回答
更改window.navigator.webdriver属性绕过检测,即可正常显示用户回答。
profile = webdriver.FirefoxProfile() profile.set_preference("dom.webdriver.enabled", False)
|
用户页面
driver.get('https://www.zhihu.com/people/Victue/answers')
|
问题及回答列表
QAs = driver.find_elements_by_class_name('List-item')
|
问题
QA.find_element_by_css_selector('h2.ContentItem-title>div>a').text
|
阅读全文按钮
QA.find_element_by_css_selector('div.RichContent-inner')
|
回答内容(粗暴的显示所有文字,后续考虑保存为富文本)
QA.find_element_by_css_selector('div.RichContent-inner').text
|
赞同数量
QA.find_element_by_css_selector('button.VoteButton').text
|
评论数量
QA.find_element_by_css_selector('button.ContentItem-action').text
|
发布时间
creat_time = QA.find_element_by_css_selector('div.ContentItem-time>a>span') creat_time.get_attribute('data-tooltip')
|
下一页
next_page = driver.find_element_by_css_selector('button.PaginationButton-next')
|
第二种方式
答案列表中每个答案包含mete属性
upvoteCount = QA.find_element_by_xpath('(//meta[@itemprop="upvoteCount"])[i]')
dateCreated = QA.find_element_by_xpath('(//meta[@itemprop="dateCreated"])[i]') dateModified = QA.find_element_by_xpath('(//meta[@itemprop="dateModified"])[i]')
commentCount = QA.find_element_by_xpath('(//meta[@itemprop="commentCount"])[i]')
upvoteCount.get_attribute('content') dateCreated.get_attribute('content') dateModified.get_attribute('content') commentCount.get_attribute('content')
|