【问题标题】:printing the output vertically in xpath python在xpath python中垂直打印输出
【发布时间】:2016-03-21 05:18:57
【问题描述】:
import lxml
from lxml import html
import requests
import re
import csv
with open('job.csv', 'wb') as csvfile:
    a=csv.writer(csvfile)
    a.writerow(["title","employer","salary","location"])
    for i in range(1):
        url = "http://www.jobs-salary.com/salaries.php?q=illumina&ml=25&lc=&state=&company=&title=&sb=relevance&ps={}".format(i)
        page = requests.get(url)
        # print page.text
        tree = html.fromstring(page.content)
        for item in tree.xpath('//table[@class="resTb"]'):

        # print tree.xpath('//table[@class="resTb"]//td/b/a/text()')
        info = {}
        info['title']=item.xpath('.//td/b/a/text()')
        h = info['title']
        print h

我得到的输出是

['Scientist I', 'Scientist', 'Scientist', 'Scientist', 'Biochemist', 'Scientist I', 'Biochemist', 'Scientist I', 'Scientist I', 'Biomedical Engineer', 'Biochemist', 'Fluidics Engineer', 'Biochemist And Biophysicists', 'Scientist I', 'Scientist I', 'Scientist', 'Scientist', 'Scientist I', 'Scientist I', 'Scientist II']

但我希望它是垂直的,没有括号和逗号 谁能帮忙?

【问题讨论】:

    标签: python csv xpath screen-scraping


    【解决方案1】:

    您希望将列表简单地输出为由换行符 (\n) 分隔的字符串。您可以通过在您的列表中调用join 来做到这一点h

    h = ['Scientist I', 'Scientist', 'Scientist', 'Scientist', 'Biochemist', 'Scientist I', 'Biochemist', 'Scientist I', 'Scientist I', 'Biomedical Engineer', 'Biochemist', 'Fluidics Engineer', 'Biochemist And Biophysicists', 'Scientist I', 'Scientist I', 'Scientist', 'Scientist', 'Scientist I', 'Scientist I', 'Scientist II']
    print('\n'.join(h))
    

    输出:

    Scientist I
    Scientist
    Scientist
    Scientist
    Biochemist
    Scientist I
    Biochemist
    Scientist I
    Scientist I
    Biomedical Engineer
    Biochemist
    Fluidics Engineer
    Biochemist And Biophysicists
    Scientist I
    Scientist I
    Scientist
    Scientist
    Scientist I
    Scientist I
    Scientist II
    

    【讨论】:

      【解决方案2】:

      不是迭代表,而是迭代每一行(table 内的tr)。并在那里找到tds。

      from lxml import html
      import requests
      import csv
      
      url = "http://www.jobs-salary.com/salaries.php?q=illumina&ml=25&relevance&ps={}"
      with open('job.csv', 'wb') as csvfile:
          a = csv.writer(csvfile)
          a.writerow(["title", "employer", "salary", "location"])
          for i in range(1):
              page = requests.get(url.format(i))
              tree = html.fromstring(page.content)
              for item in tree.xpath('//table[@class="resTb"]/tr')[1:]:
                  row = [
                      item.xpath('.//td[1]')[0].text_content(),  # title
                      item.xpath('.//td[2]')[0].text_content(),  # employer
                      item.xpath('.//td[3]')[0].text_content(),  # salary
                      item.xpath('.//td[4]')[0].text_content(),  # location
                  ]
                  print row
                  a.writerow(row)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        相关资源
        最近更新 更多